如果ExecuteQuery
要执行的方法,可以执行以下操作:
void SomeMethod() {
var thread = new Thread(ExecuteQuery);
thread.Start();
}
void ExecuteQuery() {
//Build your query here and execute it.
}
如果ExecuteQuery
收到一些参数,例如:
void ExecuteQuery(string query) {
//...
}
你可以做:
var threadStarter = () => { ExecuteQuery("SELECT * FROM [Table]"); };
var thread = new Thread(ThreadStarter);
thread.Start();
如果要停止后台线程的执行,请避免调用thread.Abort()
method。这将使kill
线程运行,并且您不希望这样做,因为某些不相容性可能会出现在数据库中。
相反,您可以从外部和外部bool
看到一个变量,ExecuteQuery
可以将其设置为True
要停止的时间。然后,您所要做的就是检查代码中的某些部分ExecuteQuery
是否仍然存在True
。否则,请做一些回滚 以保持数据库的稳定。
确保设置该bool
变量volatile
如果您希望UI从后台线程 等待 ,我通常会这样做:
线程完成后,您可以停止进度栏并再次启用控件。
如何知道线程何时完成?您可以为此使用事件。只需创建一个事件并在事件结束时将其触发,然后在事件处理程序中执行任何操作即可…