C# 从单独的类查看ThreadStatic变量

C# 从单独的类查看ThreadStatic变量,c#,multithreading,C#,Multithreading,我在主窗体中声明了一个ThreadStatic变量,如下所示: [ThreadStatic] public bool _skipCurrent = false; 我已经执行了另一个函数,并使用以下代码将数据反馈到我的主窗体: var updateMe = new Progress<RunProgressModel>(progress => { // This works lblTest.Text = progress.Message; }); await T

我在主窗体中声明了一个ThreadStatic变量,如下所示:

[ThreadStatic]
public bool _skipCurrent = false;
我已经执行了另一个函数,并使用以下代码将数据反馈到我的主窗体:

var updateMe = new Progress<RunProgressModel>(progress =>
{
    // This works
    lblTest.Text = progress.Message;
});

await Task.Run(() => monitor.Start(updateMe));
var updateMe=新进度(进度=>
{
//这很有效
lblTest.Text=progress.Message;
});
wait Task.Run(()=>monitor.Start(updateMe));
“monitor.Start”位于另一个项目中的另一个类中,如下所示:

public void Start(IProgress<RunProgressModel> progress)
{
    var currentIndex = 0;
    var updateData = new RunProgressModel();

    foreach (var task in tasks)
    {
         bool done = false;

        while (!done)
        {
            // Perform tasks
            updateData.Message = "I did a thing.";
        }

        progress.Report(updateData);
    }
}
public void启动(IProgress进程)
{
var currentIndex=0;
var updateData=new RunProgressModel();
foreach(任务中的var任务)
{
bool done=false;
而(!完成)
{
//执行任务
updateData.Message=“我做了一件事。”;
}
进度报告(更新数据);
}
}
我需要从该线程内部访问_skipCurrent,以查看任务是否需要比正常情况下更早地完成该任务的处理,如何让这个Start函数查看ThreadStatic变量


我基本上希望用户能够单击一个“跳过”按钮,该按钮可以将_skipCurrent设置为true,线程将跳过其当前任务,然后将变量设置回false。

线程静态变量是一个静态变量,您可以像任何静态变量一样访问它,即
MainForm。_skipCurrent
。但是,
ThreadStatic
变量将无法实现您想要的功能。每个线程都有自己的
ThreadStatic
变量副本可供使用。因此,如果用户单击UI线程中的取消按钮,并将
MainForm.\u skipCurrent
设置为
true
,则执行
Start()
的线程将看不到该值


您需要使用一个普通的静态变量。

ThreadStatic变量是一个静态变量,您可以像访问任何静态变量一样访问它,即
MainForm.\u skipCurrent
。但是,
ThreadStatic
变量将无法实现您想要的功能。每个线程都有自己的
ThreadStatic
变量副本可供使用。因此,如果用户单击UI线程中的取消按钮,并将
MainForm.\u skipCurrent
设置为
true
,则执行
Start()
的线程将看不到该值


您想要的是使用一个普通的静态变量。

真不敢相信它这么简单,谢谢您的时间。@MrDTuring-不客气!很高兴我能帮忙!真不敢相信这么简单,谢谢你抽出时间。@MrDTuring-不客气!很高兴我能帮忙!