スレッドを使用して UI を更新する winform アプリケーションに問題があります。私のアプリケーションは、クラウドからのファイルのアップロードとダウンロードを行います。同時に、同じウィンドウにネットワーク速度の詳細も表示しています。これら 3 つの操作 (アップロード、ダウンロード、n/w 速度の表示) は、3 つの異なるスレッドによって呼び出されます。問題は、ダウンロード/アップロードを開始すると、ウィンドウ全体がフリーズし、n/w 速度表示が更新されないことです (1 秒間隔ごとに更新するように記述されています)。何が問題になるでしょうか?前もって感謝します。
コードは次のとおりです...ダウンロード用に書いたのと同じ方法です。最初に **Upload** を呼び出し、次に **Download** を順番に呼び出すと、最初のスレッドが一時停止し、ダウンロード スレッドが開始されます。**ダウンロード**が完了すると、**アップロード**が続行されます。それは並行して進んでいません。また、UI は、他のボタンのクリックやウィンドウのサイズ変更、移動アクションに対してすぐに応答しません。
public delegate void UploadDelgt();
UploadDelgt UpldDlgtObj;
private void Form1_Load(object sender, EventArgs e)
{
UpldDlgtObj = new UploadDelgt(DoUpload);
}
public void load()
{
Form1 form = this;
form.Invoke(UpldDlgtObj);
}
private void button1_Click(object sender, EventArgs e)
{
thrd = new Thread(new ThreadStart(load));
thrd.Start();
thrd.IsBackground = true;
}
public void DoUpload()
{
//uploads file block by block and updates the progressbar accordingly..
}