私は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. Visual Studio 2017が動作しない - 常にフリーズして「ビジー状態です」
- 2. HTML:ビジー状態のWebページで入力ボタンがフリーズする
- 3. Microsoft.WindowsAzure.Storage.StorageException - サーバーがビジー状態の
- 4. ReactJSコンポーネントセットの状態は何もしていませんか?
- 5. なぜ休止状態は何もしませんか?
- 6. 実行が完了してもJupyterのノートブックセルはビジー状態(*)のままです
- 7. vpython 7 with jupyterノートブックカーネルがビジー状態とアイドル状態の間でジャンプする
- 8. ビジー状態のインジケータが透明
- 9. サービスがWCFでビジー状態のエラーが発生しました
- 10. BluetoothGattオブジェクトがビジー状態です
- 11. Azure Storage Explorer:サーバーがビジー状態です
- 12. 反応ネイティブのコマンドはフリーズして何もしません
- 13. 長時間実行されている操作でビジー状態のときにWCFサービスへのPINGの応答
- 14. iCloudのビジー状態のクエリcaldav
- 15. アクティビティの状態をフリーズ - Android
- 16. Webroleが起動せず、常にビジー状態です
- 17. スレッドが起動しない他のスレッドがビジー状態です
- 18. 再生アプリケーションは、初期状態でもうまく動作しません。
- 19. ポート3306がビジー状態ですが、それを使用しているプロセスはありません
- 20. IsAsyncバインディングがビジー状態の間、砂時計が必要です。可能?
- 21. 準備完了状態の前にdomを操作しても問題ありませんか?
- 22. SQLiteがビジー状態です、データベースがロックされています
- 23. GoogleカレンダーAPI、「ビジー」状態でフィルタリングする
- 24. ビジー状態のインジケータが反応したネイティブ
- 25. 状態にリンクしてもURLは変更されません
- 26. Seamを開始するContext数秒間アイドル状態にしても何度もアイドル状態になる
- 27. ブートストラップアクティブ状態サブメニューが正しく動作しません
- 28. デザインビューをクリックするとVS2008がビジー状態になります
- 29. 休止状態でのIN操作
- 30. Facebookアプリのリクエストダイアログボックスは読み込み中でもビジー状態にある
あなたの言うことを混乱させる。 – joshua