説明が少し曖昧であることを私は知っているので、より良い説明です。
毎分更新されるタイマーが付いた1つの開いているForm1があります。
しかし、私は別のform2で作業しており、Form1が開いています。これは、form2でボタンを押してSQLにデータを送信する(ステートメントに挿入する)場合、タイマーがコードを中断するため、データがSQLserverに保存されない可能性があります。
説明が少し曖昧であることを私は知っているので、より良い説明です。
毎分更新されるタイマーが付いた1つの開いているForm1があります。
しかし、私は別のform2で作業しており、Form1が開いています。これは、form2でボタンを押してSQLにデータを送信する(ステートメントに挿入する)場合、タイマーがコードを中断するため、データがSQLserverに保存されない可能性があります。
いいえ。WinFormフレームワークは単一のスレッドで動作します。したがって、Form2が現在データベースコマンドを実行している場合、そのコマンドが完了するまでUIスレッドはビジーになります。スレッドが自由に処理できるようになるまで、他のUIアクティビティは処理されません。System.Timers.Timer
またはを使用することもできますが、System.Threading.Timer
これらは別のスレッドで動作するため、タイマーの目的がステータスや進行状況の表示など、何らかの方法でUIを変更することである場合、UIへの変更はとにかく、UIスレッドは無料です。このような状況を処理する最良の方法は、代わりに、時間のかかる作業を別のスレッドで実行して、作業の実行中にUIスレッドが解放されるようにすることです。フォームでそれを行う最も簡単な方法は、BackgroundWorker
成分。これはコンポーネントなので、フォームデザイナツールボックスからフォームにドラッグできます。