相关疑难解决方法(0)

C#Thread Termination和Thread.Abort()

在MSDN中,Thread.Abort()方法的描述说:"调用此方法通常会终止线程."

为什么不总是?

在哪些情况下它不会终止线程?

有没有其他可能终止线程?

.net c# multithreading

82
推荐指数
6
解决办法
8万
查看次数

使用布尔标志来阻止线程在C#中运行是否安全?

我主要关心的是布尔标志......没有任何同步就可以安全地使用它吗?我在几个地方读到它是原子的(包括文档).

class MyTask
{
    private ManualResetEvent startSignal;
    private CountDownLatch latch;
    private bool running;

    MyTask(CountDownLatch latch)
    {
        running = false;
        this.latch = latch;
        startSignal = new ManualResetEvent(false);
    }

    // A method which runs in a thread
    public void Run()
    {
        startSignal.WaitOne();
        while(running)
        {
            startSignal.WaitOne();
            //... some code
        }
        latch.Signal();
    }

    public void Stop()
    {
        running = false;
        startSignal.Set();
    }

    public void Start()
    {
        running = true;
        startSignal.Set();
    }

    public void Pause()
    {
        startSignal.Reset();
    }

    public void Resume()
    {
        startSignal.Set();
    }
} …
Run Code Online (Sandbox Code Playgroud)

c# multithreading thread-safety

35
推荐指数
2
解决办法
3万
查看次数

跳过等待任务响应条件

我有以下代码:

//Await #1

var response1 = await doSomething();

if(response1.isSuccess) {

//Await #2

var response2 = await doSomethingElse();

}
Run Code Online (Sandbox Code Playgroud)

响应 1 和响应 2 是完全独立的,我想在这里并行化等待任务。基本上响应 2 需要很多时间,因此只有在响应 1 成功时才会调用。有什么方法可以调用这两个任务并查看响应 1 的结果,如果失败,我删除/跳过 Await#2 的响应。

c#

7
推荐指数
1
解决办法
195
查看次数

标签 统计

c# ×3

multithreading ×2

.net ×1

thread-safety ×1