初めてマルチスレッド プログラムを作成しましたが、動作しません。以下は、私がやろうとしていることを描写する、私が思いつくことができる最小の完全なプログラムです。
基本的に、私は以下を作成しました。引数を取らず、文字列を返すデリゲート。前述のデリゲートのメソッド シグネチャに一致する3 つのメソッド ( FirstMessage
、SecondMessage
、および)。ThirdMessage
3 つのメソッドを含むこのデリゲートの型のイベント。
最後に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();
}
}
前もって感謝します!