2011-12-31 6 views
1

大きなファイルからの書き込みや読み込みでは、使用したアマチュアプログラムの多くがフリーズしてしまいます。これは、読み書き中のファイルのサイズを考慮するとわかります。ウィンドウ内のファイルを移動すると、プログラムなどの解凍が行われているときにプログラムがフリーズすることはなく、ウィンドウを移動したり、操作をキャンセルしたりすることができます。プログラムのリソース重視の作業をじっとしていますか?

これはどのように行われますか?大規模操作の最後にボタンの追加やウィンドウの移動を追加するのではなく、ボタンの押しやウィンドウの移動を計算できるように、操作に断続的な一時停止がありますか?もしそうなら、これはどのように行われますか?

+0

簡単な方法の1つは[BackgroundWorker](http://msdn.microsoft.com/en-us/library/system.componentmodel.backgroundworker.aspx)です(IOは別のスレッド*で行われ、 「キャンセル」フラグまたは他の制御状態のために)、UI *は常にウィンドウメッセージポンプのスレッド上で発生する。もちろん、この同じタスクはより基本的な操作を使用して行うことができます。 async-IOアプローチもありますが、実際には追加のスレッドを使用する場合もあります。 –

+1

もっと一般的には、間欠的な休止は、リソーススケジューリングの形式であることを示唆しています:http://en.wikipedia.org/wiki/Scheduling_%28computing%29。スレッディングは、アプリケーションのコンピュータリソース(CPU、メモリなど)集約タスクをスケジュール可能なものに細分することのできる1つの方法です。 –

答えて

2

プログラムが複数起動する可能性があります。threads of control 1つのスレッドは、Windows message loopを担当しますので、サイズ変更、再描画、再描画、最小化/最大化などはすべて視覚的に気に入ったやり方で処理されます "キャンセル"ボタンをクリックすると、を中断できます。コンピューティングを管理するスレッド - 集中的またはIO集約的な操作。

関連する問題