gpt4 book ai didi

c# - DoWork 中的后台工作变量分配

转载 作者:行者123 更新时间:2023-11-30 13:40:51 24 4
gpt4 key购买 nike

我使用的 BackgroundWorker 与以前有点不同。

通常,我使用 BW 来更新一些图形控件,我在 DoWork 方法中执行所有需要的任务,返回结果并为 RunWorkerCompleted 赋值> 事件处理程序。

在这里,我只是想将一些计算(数据库查询)的结果分配给当前窗口的一些私有(private)变量_myList

我很惊讶地看到我被允许从 DoWork 方法分配列表,我真的很惊讶。

我只是想知道这是正常的还是出于某种原因不推荐?

最佳答案

您将被允许分配给变量,因为它没有任何防止跨线程操作的检查,唯一执行这些检查的是 UI 元素。

至于是否推荐,你就进入了多线程同步的境界。

通常您会在尝试使用资源之前锁定对资源的访问,以防止诸如竞争条件之类的事情发生:

static object Locker = new object();

lock (Locker)
{
// variable assignment in here.
}

如果您的用法是基本的,例如,您设置它然后在您从它读取的后台工作 block 的末尾,那么您将可以安全地执行此操作。但是,如果其他东西试图写入它,或者您有代码在对其执行操作之前检查变量内容,那么您就会开始出现竞争条件。

关于c# - DoWork 中的后台工作变量分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6731648/

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