您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

如何最好地在后台执行查询以不冻结应用程序(.NET)

如何最好地在后台执行查询以不冻结应用程序(.NET)

如果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从后台线程 等待 ,我通常会这样做:

线程完成后,您可以停止进度栏并再次启用控件。

如何知道线程何时完成?您可以为此使用事件。只需创建一个事件并在事件结束时将其触发,然后在事件处理程序中执行任何操作即可…

后台线程正确访问UI控件,否则将给您带来错误

dotnet 2022/1/1 18:50:45 有484人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶