私はC#を使用しているWinFormsアプリケーションを持っています。私はファイルからいくつかのデータを読み込み、それをデータテーブルに挿入しようとします。この操作がビジー状態では、フォームがフリーズし、イベントを移動できません。誰も私はこの問題を解決する方法を知っていますか?操作がビジー状態の間、フォームは何もしません(フリーズ)
答えて
これは、UIスレッドで操作したためです。
UIスレッドがフリーズしないように、ファイルとデータベースのアクションを別のスレッドに移動します。
ここにThreadPoolを使用した例があります。 代わりに、手作業でスレッドを開始することもできますが、手動でスレッドを手動で追跡する必要があります。それらを中止したいなど
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Threading;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
// With ThreadPool
ThreadPool.QueueUserWorkItem(DoWork);
}
private void DoWork(object state)
{
// Do Expensive Work
for (int i = 0; i < 100; i++)
{
Thread.Sleep(10);
}
System.Diagnostics.Debug.WriteLine("DoWork finished!");
}
}
}
回答ありがとうございますが、コード – namco
これは、メインスレッドを使用して時間がかかるためです。最適な解決策は、必要なファイルの読み込みに別のスレッドを使用することです。これにより、メインスレッドは正常に更新されます。 は、複数のスレッドhttp://msdn.microsoft.com/en-us/library/aa645740%28v=vs.71%29.aspxについてはこちらを読む
あなたのUI関連のコントロールがUI thread
上で実行され、原則として、あなたは(あなたがそれを行う場合は、あなたのUIスレッドがそのタスクまで/凍結をブロックしますあなたのUIスレッド上で作業を消費する時間を行うべきではありません完了)。 Worker Thread
と呼ばれる別の種類のスレッドが作成でき、UIの応答性を維持する/実行しないで長期間実行するタスクを実行できます。 Threading in Windows Forms
の使い方について説明します。
また、WinformsにBackgroundworker component
があります。これは、hereで説明されているUI以外のスレッドでタスクを実行するために利用できます。
- 1. なぜ休止状態は何もしませんか?
- 2. サービスがWCFでビジー状態のエラーが発生しました
- 3. Webroleが起動せず、常にビジー状態です
- 4. 準備完了状態の前にdomを操作しても問題ありませんか?
- 5. 状態にリンクしてもURLは変更されません
- 6. ブートストラップアクティブ状態サブメニューが正しく動作しません
- 7. IsAsyncバインディングがビジー状態の間、砂時計が必要です。可能?
- 8. 休止状態の多対多カスケードは動作しません
- 9. Order by節は休止状態では動作しません
- 10. デザインビューをクリックするとVS2008がビジー状態になります
- 11. Seamを開始するContext数秒間アイドル状態にしても何度もアイドル状態になる
- 12. 休止状態カスケード操作が動作しない
- 13. @Transientは休止状態で動作しません
- 14. Facebookアプリのリクエストダイアログボックスは読み込み中でもビジー状態にある
- 15. SAPI TTSエンジンがビジー状態のときの検出方法
- 16. OracleConnection.ClearAllPools - 操作が原因オブジェクトの現在の状態に有効ではありません
- 17. サービスが利用できません503 + http://localhost/ProductsService/Service.svcにあるHTTPサービスがビジー状態です
- 18. ページがビジー状態のときにGIFアイコンをロードする
- 19. Uwamp 3.1.0は、Apacheのポート80がビジー状態だと言っています
- 20. オペレーティングシステムまたはアクティブウィンドウがビジー状態になるたびにキャプチャするには
- 21. MySQLのSLEEP()関数はビジー状態ですか?
- 22. フォームの状態を管理する最も良い方法は何ですか?
- 23. デバイスまたはリソースがビジー状態になるプロセスを終了する: '/ dev/ttyUSB0'?
- 24. phpmyadminプロセスを殺したいがそのビジー状態を解消したい
- 25. 操作がトランザクションの状態に無効です。オーチャードCMS
- 26. プラグインがオブジェクトを作成していません。オブジェクト状態の表示が定義されていません
- 27. jQueryのトグル状態が正しくありません
- 28. ASP.NETでページが読み込まれるときにビジー状態のマウスカーソル
- 29. WiFiの状態が有効ではありません
- 30. Haswellマイクロアーキテクチャーには、停止状態のサイクルバックエンドがありません。
あなたの言うことを混乱させる。 – joshua