0

イベントがタスクから発生するとどうなりますか?別のスレッドまたは同じタスクパスがありますか?

4

1 に答える 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 に答える