相关疑难解决方法(0)

任务和线程有什么区别?

在C#4.0中,我们已经TaskSystem.Threading.Tasks命名空间.之间有什么真正的改变ThreadTask.我为了学习而做了一些示例程序(帮助从MSDN获取)

Parallel.Invoke 
Parallel.For 
Parallel.ForEach 
Run Code Online (Sandbox Code Playgroud)

但有很多疑问,因为这个想法并不那么清楚.

我最初在Stackoverflow中搜索了类似类型的问题但可能是这个问题标题我无法得到相同的.如果有人知道之前发布的相同类型的问题,请提供链接的参考.

c# multithreading terminology task-parallel-library c#-4.0

366
推荐指数
7
解决办法
20万
查看次数

任务与线程差异

我是并行编程的新手..NET中有两个类:TaskThread.

所以,问题是:这些课程有什么区别?何时更好地使用Thread何时Task

.net c# multithreading task

307
推荐指数
4
解决办法
24万
查看次数

可以在ThreadStart方法中使用"async"吗?

我有一个Windows服务使用Thread和SemaphoreSlim每60秒执行一些"工作".

class Daemon
{
    private SemaphoreSlim _semaphore;
    private Thread _thread;

    public void Stop()
    {
        _semaphore.Release();
        _thread.Join();
    }

    public void Start()
    {
        _semaphore = new SemaphoreSlim(0);
        _thread = new Thread(DoWork);
        _thread.Start();
    }

    private void DoWork()
    {
        while (true)
        {
            // Do some work here

            // Wait for 60 seconds, or exit if the Semaphore is released
            if (_semaphore.Wait(60 * 1000))                
            {
                return;
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我想从中调用异步方法DoWork.为了使用await我必须添加async到的关键字DoWork:

private async void DoWork()
Run Code Online (Sandbox Code Playgroud)
  1. 有什么理由不这样做吗?
  2. 如果DoWork已经在专用线程内运行,那么DoWork是否能够异步运行?

c# async-await

11
推荐指数
1
解决办法
2015
查看次数