0

我知道描述有点模糊,因此更好的描述。

我有 1 个打开的 Form1,上面有一个计时器,每分钟更新一次。

但是我在另一个form2上工作并且Form1是打开的,如果我在form2上按下一个按钮将数据发送到SQL(插入语句),计时器会中断代码,因此数据不会保存在SQLserver中

4

1 回答 1

1

不会。WinForm 框架在单线程上运行。因此,如果 Form2 当前正在执行数据库命令,则 UI 线程将一直忙到该命令完成。在线程空闲之前,不会处理其他 UI 活动。您可以使用System.Timers.TimerorSystem.Threading.Timer代替,因为它们在单独的线程上运行,但是,如果计时器的目的是以某种方式修改 UI,例如显示状态或进度,那么 UI 的更改将不会发生,直到无论如何,UI线程是免费的。处理这种情况的最佳方法是,在单独的线程上执行耗时的工作,以便 UI 线程在工作完成时是空闲的。在表单中执行此操作的最简单方法是使用BackgroundWorker零件。它是一个组件,因此您可以从表单设计器工具箱中将一个组件拖到您的表单上。

于 2012-10-04T15:46:43.253 回答