可以通过打开的形式在其他打开的表单上中断代码

时间:2012-10-04 15:38:17

标签: sql-server vb.net timer

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

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

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

1 个答案:

答案 0 :(得分:1)

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