gpt4 book ai didi

c# - 将 UI 线程的 TaskScheduler 存储在字段中是否安全?

转载 作者:行者123 更新时间:2023-12-02 13:25:12 25 4
gpt4 key购买 nike

将 UI 线程的 TaskScheduler 存储在如下字段中是否安全:

class TaskSchedulerReference {

private readonly _uiTaskScheduler;

// Constructor is called by the UI Thead
public TaskSchedulerReference() {
_uiTaskScheduler = TaskScheduler.FromCurrentSynchronizationContext()
}

public TaskScheduler UiTaskScheduler { get { return _uiTaskScheduler; } }
}

...这样就可以随时从 Task.ContinueWith(action, TaskSchedulerReference.UiTaskScheduler) 回调中的任何后台线程通知 UI。

是否保证引用在整个应用程序生命周期内保持有效?

最佳答案

除了那个可疑的//UI线程首先访问这个类,是的。请改用显式初始化程序(从 UI 线程显式运行),JIT 不保证在 UI 线程上运行类初始化程序。

但是,我更喜欢将上下文捕获为局部变量。在多线程(和异步编程)中,将任何内容公开为全局状态是很棘手的。始终尝试尽可能使用本地状态。它还带有旧的 IsInvokeRequired 模式的味道。每个方法都应该非常明确地说明在哪里发生的事情 - 否则很容易意外地引入可重入代码和死锁。

关于c# - 将 UI 线程的 TaskScheduler 存储在字段中是否安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28700781/

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