任务和主线程返回相同的ID?

时间:2015-10-28 19:47:25

标签: c# multithreading task-parallel-library

以下代码返回相同的id,是否可以,因为Task应该在一个单独的线程中运行?

    private void frmSplash_Load(object sender, EventArgs e)
    {
        **MessageBox.Show(Thread.CurrentThread.ManagedThreadId.ToString());**

        var uiScheduler = TaskScheduler.FromCurrentSynchronizationContext();
        Task.Factory.StartNew(() =>
        {
            **MessageBox.Show(Thread.CurrentThread.ManagedThreadId.ToString());**

        }, CancellationToken.None, TaskCreationOptions.None, uiScheduler);

    }

1 个答案:

答案 0 :(得分:2)

您正在使用var uiScheduler = TaskScheduler.FromCurrentSynchronizationContext();,这意味着它将为您的UI线程使用Context。

使用Task.Run()或其他TaskScheduler具有单独的ThreadID

有关详细信息,请参阅 - https://msdn.microsoft.com/en-us/library/dd997394(v=vs.110).aspx