0

基本的に、ユーザーが SQL Server 2008 データベース上のデータを検索して更新/操作できるようにする vb.net 4.0 UI があります。データベースとのすべての通信は、ストアド プロシージャを介して行われます。更新プロセスの 1 つは、処理に最大 6 分かかる場合があります。現在、ユーザーには、更新が完了するまで「処理中...」というメッセージが表示され、その後、結果が表示されます。

これはバックグラウンド タスクの良い候補だと思います。ユーザーがリクエストを呼び出して、UI で他の作業を続けられるようにしたいと考えています。タスクが終了すると、結果が通知されます。スレッドでこれを達成できますか? 私はスレッディングに慣れていませんが、いくつかの文献と例があれば、途中で行くことができます。私はいくつかのグーグルを実行しましたが、タスクの実行中にユーザーが UI で作業を続行できるかどうかは、例では明らかではありません。私が説明したことを達成するための他のオプションはありますか?

ありがとう。

4

1 に答える 1

1

バックグラウンド タスクを実行するためのオプションは多数ありますが、.net 4.0 ではおそらく TPL (Task Parallel Library) を利用するのが最も適切です。バックグラウンド タスクは次のように実行できます。

Task.Factory.StartNew(()=>SomeMethod());

詳細情報はこちらからご覧いただけます。

http://msdn.microsoft.com/en-us/library/dd460717.aspx

ただし、この呼び出しから戻るときに UI の更新を実行する必要がある場合は、それを UI スレッドにディスパッチする必要があることに注意してください。

TPL には、Dispatcher スレッドで継続を実行するメカニズムもあります。

バックグラウンド タスクの実行中、UI スレッドはブロックされません。

于 2012-07-12T11:52:54.373 に答える