我刚刚创建了我的第一个多线程程序,但它不工作。以下是我能想出的最小的完整程序,它描述了我正在尝试做的事情。
本质上,我创建了:一个不带参数并返回字符串的委托;与上述委托的方法签名匹配的三个方法(FirstMessage
、SecondMessage
和);ThirdMessage
以及包含三个方法的此委托类型的事件。
最后,我创建了一个Start
异步运行事件中的每个方法并显示它们的返回值的方法。但是,该程序没有输出任何内容。我是不是误会了什么?
这是代码:
using System;
class Program
{
delegate string Message();
static event Message MyMessage;
static string FirstMessage()
{
System.Threading.Thread.Sleep(1000);
return "Message 1";
}
static string SecondMessage()
{
System.Threading.Thread.Sleep(2000);
return "Message 2";
}
static string ThirdMessage()
{
System.Threading.Thread.Sleep(3000);
return "Message 3";
}
static void Start()
{
foreach (Message m1 in MyMessage.GetInvocationList())
{
Message m2 = m1;
m1.BeginInvoke(delegate(IAsyncResult result)
{
string msg = m2.EndInvoke(result);
Console.WriteLine("The message is " + msg + ".");
}, null);
}
}
static void Main()
{
MyMessage += FirstMessage;
MyMessage += SecondMessage;
MyMessage += ThirdMessage;
Start();
}
}
提前致谢!