以下代码返回相同的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);
}
答案 0 :(得分:2)
您正在使用var uiScheduler = TaskScheduler.FromCurrentSynchronizationContext();
,这意味着它将为您的UI线程使用Context。
使用Task.Run()
或其他TaskScheduler
具有单独的ThreadID
有关详细信息,请参阅 - https://msdn.microsoft.com/en-us/library/dd997394(v=vs.110).aspx