我一直在Winforms永远这样做:
new Thread((query_) =>
{
Functions.UpdateInsert(query_);
}).Start(query);
但是当我尝试在WPF中执行此操作时,IDE会告诉我“委托'System.Threading.ThreadStart'不接受1个参数。”
这在WPF中是否有所不同?
任何帮助将不胜感激。谢谢!
答案 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。