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中有不同的做法吗?

如有任何帮助,我们将不胜感激。谢谢

new Thread()在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中有效。