0

データベース(sqlserver)に書き込むメソッド(たとえばmethod1)と、しばらくして同じデータベースにアクセスしようとし、method1によって作成されたデータ行を更新する別のメソッド(たとえばmethod2)があります。

この問題は、LANが切断されているためにmethod1がdbにアクセスできない場合に発生します(これは例外ではありません。これは私のソフトウェアで確実に発生するシナリオであり、詳細に入ると質問が複雑になりすぎます)。method1がdbmethod2にアクセスできない場合動作しません。

私がやりたいのは、LANが切断されている場合、method1がサーバーではなくローカルデータベースに値を格納するようにすることです。ローカルデータベースに値が入力されるとすぐに、アプリケーションは10〜15秒後にサーバーへのアクセスを開始する必要があります。

タイマーを使用するか、新しいスレッドを作成する必要がありますか?

4

3 に答える 3

5

時間間隔の後に特定の操作を実行するには、タイマーがおそらく最善の策です。

タイマー: アプリケーションで定期的なイベントを生成します。

于 2012-07-06T04:32:32.123 に答える
0

以下のリンクは、指定された間隔で実行され、バックグラウンド スレッドを使用して指定されたユーザー アクションを実行する汎用ポーリング コンポーネントを c# で示しています。この操作を使用して、ローカル DB を確認し、必要な操作を実行できます。

使用例:

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

于 2012-09-14T15:35:57.470 に答える
0

将来のある時点で、実行時間の長い (GUI がフリーズする可能性がある) 操作を開始するには、両方が必要です。間隔の後に操作を開始するにはタイマーを使用し、長いバックグラウンド操作を実行するにはスレッドを使用します。

于 2012-07-06T04:37:16.633 に答える