相关疑难解决方法(0)

BackgroundWorker与后台线程

我有一个关于我应该在Windows窗体应用程序上使用的后台线程实现的选择的风格问题.目前我BackgroundWorker在一个具有无限(while(true))循环的表单上.在这个循环中,我WaitHandle.WaitAny用来保持线程打盹直到感兴趣的事情发生.我等待的一个事件句柄是一个" StopThread"事件,这样我就可以摆脱循环.来自我被覆盖的事件会发出此事件的信号Form.Dispose().

我读到的某个地方BackgroundWorker真的是用于那些你不想将UI绑定到并且具有有限结束的操作 - 比如下载文件或处理一系列项目.在这种情况下,"结束"是未知的,并且仅在窗口关闭时.因此,使用后台线程而不是BackgroundWorker为此目的更合适吗?

.net multithreading backgroundworker winforms

163
推荐指数
7
解决办法
11万
查看次数

拥有一组一次只运行X的任务

假设我有100个任务需要10秒钟.现在我想一次只运行10个,就像10个中的1个完成另一个任务一样,直到完成所有任务.

现在我总是习惯于ThreadPool.QueueUserWorkItem()这样的任务,但我已经读到这样做是不好的做法,我应该使用任务.

我的问题是我没有找到适合我的方案的好例子,所以你能让我开始研究如何通过Tasks实现这个目标吗?

c# multithreading task

27
推荐指数
5
解决办法
1万
查看次数

如何使用Thread.Sleep与Task.Run而不阻止主踏板

是否可以确保任务在主线程之外的另一个线程上运行?所以这段代码不会打扰调用线程?

var task = Task.Run(() =>
{
    //third party code i don't have access to
    Thread.Sleep(3000);
});
Run Code Online (Sandbox Code Playgroud)

我知道有,Task.Delay但我想确保该任务将在另一个线程上运行.

.net c# multithreading asynchronous

4
推荐指数
2
解决办法
3190
查看次数