新的Thread()参数化在WPF中启动

时间:2014-09-10 14:09:33

标签: c# .net wpf multithreading

我一直在Winforms永远这样做:

new Thread((query_) =>
{
    Functions.UpdateInsert(query_);
}).Start(query);

但是当我尝试在WPF中执行此操作时,IDE会告诉我“委托'System.Threading.ThreadStart'不接受1个参数。”

这在WPF中是否有所不同?

任何帮助将不胜感激。谢谢!

3 个答案:

答案 0 :(得分:2)

尝试以这种方式使用它:

Thread t = new Thread(()=> Functions.UpdateInsert(query));
t.Start();

答案 1 :(得分:0)

如果查看this answer,可以看到可以在没有参数的情况下调用Thread.Start。

我不确定你是否尝试在一行中完成这一切,但如果你这样开始你的线程,它应该可以正常工作:

Thread thread = new Thread(() => Functions.UpdateInsert(query_));
thread.Start();

答案 2 :(得分:-1)

假设您的UpdateInsert函数执行某些数据库操作,并且您希望在执行此操作时启动一个不阻塞用户界面的线程,您应该尝试异步编程的异步/等待方法:

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。