حول معلمات الخيط (2.0)، "قيمة الإرجاع"، وتعليق الخيط
1. معلمات الموضوع:
في بعض الأحيان تريد تمرير بعض المعلومات إلى مؤشر الترابط المساعد. هنا تحتاج إلى استخدام
مثال مندوب ParameterizedThreadStart:
Private void btRunThread_Click(
object sender, EventArgs e)
{
Thread t = new Thread(new ParameterizedThreadStart(this.ThreadRun));
(100
);
Private void ThreadRun(object o)
{
this.lbCompleted.Invoc((MethodInvocer)delegate { this.lbCompleted.Text = System.Convert.ToString(o); })
;
2. يمكن تحقيق وظائف مماثلة تقريبًا من خلال الوكلاء مثال:
class Program
{
static void Main(string[] args)
{
ThreadClass tc = new ThreadClass(new MyDlg(DlgMethod)
Thread thread = new Thread(new ThreadStart(tc. ThreadRun ));
Console.WriteLine("بدء الموضوع الثاني")
;
Thread.Join
();
Console.WriteLine("اكتمل الموضوع الثاني")
;
Private static void DlgMethod(int i)
{
Console.WriteLine
("نتيجة الموضوع الثاني:{0}"، i)
;
المندوب العام void MyDlg(int i);
class ThreadClass
{
خاص MyDlg myDlg؛
public ThreadClass(MyDlg pDlg)
{
this.myDlg = pDlg
}
;
public void ThreadRun()
{
int Total = 0
for (int i = 0; i < 100; i++)
{
Total += i
}
if (myDlg !
=
null)
{
myDlg(total
)
;
3. تعليق سلاسل الرسائل:
(1) طريقة .join
ملاحظات MSDN: أثناء الاستمرار في تنفيذ معالجة مضخة رسائل COM وSendMessage القياسية، يتم حظر مؤشر ترابط الاتصال حتى ينتهي مؤشر الترابط.
لقد كنت في حيرة من أمري وحاولت ذلك بنفسي، ويبدو أنه بعد استدعاء الخيط لطريقة الانضمام، يستحوذ الخيط على كل وقت وحدة المعالجة المركزية حتى تكتمل مهمة الخيط. لا أعرف إذا كان هذا هو الحال؟
(2) تؤدي طريقة الإجهاض
إلى إنهاء الخيط على الفور
(3). مثال على تعريف المعرف
:
class Program
{
public static
void Main(string[] args)
{
stop = false;
Thread t = new Thread(new ThreadStart(ThreadRun));
t.Start
()
;
Console.Read();
}
static void ThreadRun()
{
while(
!stop)
{
Console.WriteLine("
قم ببعض الأعمال...")
;
http://www.cnblogs.com/KissKnife/archive/2006/10/03/520463.html