roa*_*oul 6 c# multithreading threadpool
我只是对线程和UI控件感到好奇.
根据我的测试代码,当我运行编译的.exe文件时,线程访问进程条没有任何问题.但是当我调试代码时,会出现InvalidOperationException.(无论是汇集的线程还是正常的线程.)
所以我知道线程不允许访问UI控件,但是为什么在运行.exe文件时它没问题.这是一个预期的设计吗?
PS.I知道我们可以使用backgroundworker来使事情变得优雅.
private void button1_Click(object sender, EventArgs e)
{
Task.Factory.StartNew(dothing);//use the pooled thread
//Thread t = new Thread(new ThreadStart(this.ThreadProcSafe));
//t.Start();
}
private void dothing()
{
for (int i = 1; i <= 100; i++)
{
progressBar2.Value = i;
Thread.Sleep(100);
}
}
Run Code Online (Sandbox Code Playgroud)
Joh*_*ohn -5
在我的记忆中,您无法在其他线程中访问 UI 元素,而只能在主线程中访问。这是因为一些多线程问题(同一内存中的多访问、异步问题......等)。如果你想做你想做的事。您可以在 C# 中使用“委托函数”。