定时器还是线程?

时间:2012-07-06 04:30:16

标签: c# multithreading timer

我有一个写入数据库(sqlserver)的方法(比如method1)和另一个尝试在一段时间后访问同一个数据库并更新method1创建的数据行的方法(比如method2)。

当由于局域网断开连接而导致方法1无法访问数据库时出现问题(这不是一个例外,这种情况肯定会在我的软件中出现,如果方法1未能通过,那么进入细节会使问题过于复杂)访问db方法2无法正常工作。

我想要做的是,如果LAN断开连接,将method1存储值存储到本地数据库而不是服务器,并且只要它在本地数据库中输入值,应用程序应该在10-15秒之后开始尝试访问服务器

我应该使用计时器或创建新线程?

3 个答案:

答案 0 :(得分:5)

要在一段时间间隔后执行某项操作,Timer可能是最好的选择。

  

计时器:在应用程序中生成重复事件。

答案 1 :(得分:0)

您需要在将来的某个时间开始长时间运行(可能冻结的GUI)操作。您可以使用计时器在间隔和线程之后开始操作以执行长后台操作。

答案 2 :(得分:0)

下面的链接在c#中演示了一个通用的轮询组件,它以指定的时间间隔运行,并使用后台线程来执行指定的用户操作。您可以使用此操作检查本地数据库并执行必要的操作。

样本用法:

IPoller poller = new UrlPoller(args[0], TimeSpan.FromSeconds(7));
IPolling pollingComponent = new Polling.Core.Polling(poller);
pollingComponent.SubscribeForPollingUpdates(PollingAction);
pollingComponent.Start();

有关代码和完整示例,请参阅:

http://www.avantprime.com/blog/24/an-example-of-repeating-code-using-a-worker-thread-without-using-timers-c