gpt4 book ai didi

c# - 从不同的线程调用方法

转载 作者:行者123 更新时间:2023-11-30 21:37:44 25 4
gpt4 key购买 nike

我有 4 个窗口窗体,它们使用另一种窗体的一种方法。此方法必须仅由其中一种形式处理。如果一个线程要使用这个方法,必须保证这个方法此时没有被其他线程调用。

我有这样的解决方案

bool methodIsBusy = false;

void Method()
{
methodIsBusy = true;

//do method things

//done method things

methodIsBusy = false;

}

并使用methodIsBusy 知道该方法是否被线程占用。这个问题有没有更有创意的解决方案?谢谢。

最佳答案

最简单的传统模式更像这样,使用 lock .锁内的代码(称为 critical section)一次只能由一个线程执行。

object lockObject = new object();  //Can be anything, an object will do

void Method()
{
lock (lockObject)
{

//do method things

//done method things

}
}

理论上您可以使用 bool 但您必须编写 busywait 代码,如下所示:

//Don't do this!
while (methodIsBusy)
{
System.Threading.Thread.Sleep(10); //or some number
}

这种代码最终会比锁使用更多的资源,而锁正是为此目的而设计的。

关于c# - 从不同的线程调用方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46962551/

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