![]() |
1
1
首先,停止用线程来思考。在软件开发的这一点上,线程是一个实现细节。我建议采用最高级别的解决方案。 立即想到的两个是反应式扩展(Rx)和TPL数据流。由于您的问题中没有太多上下文,很难说Rx与您的解决方案的集成有多容易。TPL数据流提供了一个简单的FIFO缓冲区,您可以这样使用:
默认情况下,数据流块在线程池上执行,并将其并发性限制为一次一个,所以这就是您所需要的。 要将工作排队到块:
|
|
2
0
否,您无法在Windows运行时应用程序中获取工作线程调度程序。在.NET for Desktop中,有一个Dispatcher类,用于管理线程的工作项队列。但在Windows运行时中,只有UI线程具有名为CoreDatcher的分派器。 将工作项提交到后台线程池。可以使用Windows.System.Threading.ThreadPool.RunAsync方法。 Using the thread pool in Windows Runtime apps 要按顺序运行工作项,可以使用await关键字。 例如:
或使用Task类
|
![]() |
A B · C#Excel自动调整列避免长文本时出错 4 月前 |
![]() |
Megrez7 · C#ToArray转换合并为一行,导致数组元素更改 4 月前 |
![]() |
Aycon · 在工厂方法中释放部分创建的对象的正确方法是什么? 4 月前 |
|
Sei · Avalonia/WPF将路由器传递到控制模板 4 月前 |