gpt4 book ai didi

c# - 运行时不同线程中的变量范围

转载 作者:行者123 更新时间:2023-11-30 20:57:10 27 4
gpt4 key购买 nike

考虑下面的代码:

public void MyMethod()
{
bool flag=true;
BackgroundWorker worker = new BackgroundWorker();
worker.DoWork += (x, y) =>
{
//time consuming task
if (flag)
{
//do something
}
};
worker.RunWorkerCompleted += (x, y) =>
{
if (flag)
{
//do something
}
};
worker.RunWorkerAsync();
}

也许是个愚蠢的问题,但据我所知,在 runworkerasync 调用之后,引发了 dowork 事件,该事件在不同的线程上运行其方法。在 dowork 事件处理程序中检查局部变量 flag 的值是安全的,因为我觉得代码在调用 worker.RunWorkerAsync 后退出 MyMethod

最佳答案

这里flag没有问题,因为有一个叫Closures的概念.然而,特别是对于线程,这可能是危险的(使用您最喜欢的搜索引擎)。

关于c# - 运行时不同线程中的变量范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17041857/

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