イベントがタスクから発生するとどうなりますか?別のスレッドまたは同じタスクパスがありますか?
1 に答える
3
これがあなたが求めているものであるかどうかはわかりませんが、この簡単なテストで示されているように、イベントハンドラーはタスクのスレッドで実行されます。
class Test
{
delegate void update();
static event update updateEvent;
static void Main(string[] args)
{
Console.WriteLine("Parent thread: " + Thread.CurrentThread.ManagedThreadId);
updateEvent += new update(Test_updateEvent);
var t = Task.Factory.StartNew(
() =>
{
Console.WriteLine("Task thread: " + Thread.CurrentThread.ManagedThreadId);
updateEvent();
});
t.Wait();
}
static void Test_updateEvent()
{
Console.WriteLine("Event thread: " + Thread.CurrentThread.ManagedThreadId);
}
}
出力:
Parent thread: 1
Task thread: 3
Event thread: 3
于 2012-09-14T08:20:28.390 に答える