gpt4 book ai didi

c# - 在 C# 中使用 BackgroundWorker 的线程问题

转载 作者:太空宇宙 更新时间:2023-11-03 11:43:52 26 4
gpt4 key购买 nike

请哪位好心人解释一下为什么下面的伪代码不起作用。问题是当从新线程调用时,永远无法在 backgroundWorker (Monitor.TryEnter(bw)) 上获取锁。如果我从主 UI 线程调用它,它工作正常。

谢谢

public class MyClass 
{
private BackgroundWorker bw;

private void Button_Click(object sender, EventArgs e)
{
System.Threading.Thread t =
new System.Threading.Thread(new System.Threading.ThreadStart(DoStuff));
t.IsBackground = true;
t.Start();
}

private void DoStuff()
{

if (Monitor.TryEnter(bw))
{
WorkDetails wd = new WorkDetails('some stuff here');
bw.RunWorkerAsync(wd);

// etc... etc...
}
}
}

最佳答案

您是否缺少 if block 末尾的 Monitor.Exit。如果没有 Monitor.Exit,首先成功执行 Monitor.TryEnter 的线程将是唯一可以再次进入的线程。

关于c# - 在 C# 中使用 BackgroundWorker 的线程问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3924541/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com