gpt4 book ai didi

c# - 这些功能中哪一个更有效?

转载 作者:太空狗 更新时间:2023-10-30 00:55:58 26 4
gpt4 key购买 nike

当使用线程时,'invoke'被用来避免'Cross Thread'(1)

但是,有时会使用“定时器对象”来避免“跨线程”(2)

像这样(例如)

public partial class Form1 : Form
{

private bool bCheckState = false;

public Form1()
{
InitializeComponent();
}

//Button Click
private void btnWork_Click(object sender, EventArgs e)
{
Thread m_Thread = new Thread(new ThreadStart(Work));
m_Thread.Start();

}

private void Work()
{
bCheckState = true;
// not use invoke
}


private void timer_Tick(object sender, EventArgs e)
{
if (bCheckState)
{
//tbxDisplay is winform's textBox control - printing data
tbxDisplay.Text = bCheckState.ToString();
bCheckState = false;
}
}
}

哪个更有效? '在 (1) 和 (2) 之间'


如果我们在'timer event'中检查后分散在'thread'中处理的数据,而不使用'invoke'或其他方法,会不会有问题? (我们听说,为了在打印“线程”内处理的数据时避免“跨线程”,经常使用将“计时器事件”中的数据分散到附加的“计时器对象”中,因为它既无益也无害)。

最佳答案

只需使用 BackgroundWorker实例并处理 ReportProgress 和/或 RunWorkerCompleted 事件,这些事件已经在正确的线程中。

关于c# - 这些功能中哪一个更有效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8876757/

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