[英]Runing one thread at a time on TaskScheduler (STA thread)
我已将StaTaskScheduler线程设置为 1,我预计每 5 秒会得到一个 Debug 输出,但最终得到 10 个具有相同日期的
private void Test() {
for (int i = 0; i < 10; i++)
Task.Factory.StartNew(() =>
{
Task.Delay(5000); //temp for long operation
Debug.WriteLine(DateTime.Now);
}, CancellationToken.None, TaskCreationOptions.None, MainWindow.MyStaThread);
}
public static StaTaskScheduler MyStaThread =
new StaTaskScheduler(numberOfThreads: 1);
我错过了什么? STA 的原因是后面会用到需要 STA 的 Icons 提取,但是这个测试是为了检查它是否按顺序完成。
您必须使用MyStaThred.QueueTask
而不是Task.Factory.Startnew
启动任务:
private void Test() {
for (int i = 0; i < 10; i++)
MyStaThread.QueueTask(new Task(() =>
{
Task.Delay(5000); //temp for long operation
Debug.WriteLine(DateTime.Now);
}));
}
public static StaTaskScheduler MyStaThread =
new StaTaskScheduler(numberOfThreads: 1);
Task.Factory.Startnew
使用 .Net Framework 内部线程池并且不考虑StaTaskScheduler
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.