new Thread()在WPF中参数化启动
本文关键字:参数 启动 WPF Thread new | 更新日期: 2023-09-27 18:21:18
我一直在Winforms中做这件事:
new Thread((query_) =>
{
Functions.UpdateInsert(query_);
}).Start(query);
但当我在WPF中尝试这样做时,IDE告诉我"Delegate‘System.Threading.ThreadStart’不接受1个参数。"
这在WPF中有不同的做法吗?
如有任何帮助,我们将不胜感激。谢谢
尝试以这种方式使用它:
Thread t = new Thread(()=> Functions.UpdateInsert(query));
t.Start();
如果你看看这个答案,你会发现Thread.Start可以在没有参数的情况下调用。
我不确定你是否试图在一行中完成这一切,但如果你像这样开始你的线程,它应该会很好地工作:
Thread thread = new Thread(() => Functions.UpdateInsert(query_));
thread.Start();
假设UpdateInsert
函数执行某些数据库操作,并且您希望启动一个线程以在执行操作时不阻塞用户界面,则应该尝试异步编程的Async/await方法:
public async void UpdateMyThing() {
LoadingIndicator.IsEnabled = true; //or something like that
var query = ...
await Task.Run(() => Functions.UpdateInsert(query));
LoadingIndicator.IsEnabled = false; //we are done
}
这就把所有线程/等待/复杂的东西留给了C#编译器,让我们保持简单!
否则,您的语法似乎没有什么问题:
new Thread((a) => { }).Start(new object());
这在我的IDE中有效。