まあ、私がやろうとしているのは、ファイルがいっぱいのディレクトリを読み込んでいる間にアニメーションgifを表示することですが、UIはフリーズしますが、これは大丈夫ですが、操作は終了する。何か案は?読み込み中にアニメーションを表示する
私はVS2010 C#
まあ、私がやろうとしているのは、ファイルがいっぱいのディレクトリを読み込んでいる間にアニメーションgifを表示することですが、UIはフリーズしますが、これは大丈夫ですが、操作は終了する。何か案は?読み込み中にアニメーションを表示する
私はVS2010 C#
実行列挙を使用してWindowsフォーム上でそれをやっているが、別のスレッドで、メインスレッドでGUIを更新します。
2つのオプションがあります。
ファイル操作を処理する別のスレッドを開始します。
は、定期的にファイルループ内でApplication.DoEvents()を呼び出します。これによりアプリは保留中のメッセージを処理してUIを更新しますが、ファイル処理ループの速度に悪影響を及ぼします。
私の電話から投稿するので、例のリンクはありません。
ここでは、ファイルを同期させる方法のコード例を示します。多分それがあなたを助けます。私はDoEventsを使うよりもこのように好きです。 DoEventsでは、私はすでにいくつかの不都合な副作用がありましたので、私はそれを使用しないようにします。
BackgroundWorker bgWorker = new BackgroundWorker() { WorkerReportsProgress=true};
bgWorker.DoWork += (s, e) => {
// Load here your file/s
// Use bgWorker.ReportProgress(); to report the current progress
};
bgWorker.ProgressChanged+=(s,e)=>{
// Here you will be informed about progress and here it is save to change/show progress. You can access from here savely a ProgressBars or another control.
};
bgWorker.RunWorkerCompleted += (s, e) => {
// Here you will be informed if the job is done.
// Use this event to unlock your gui
};
bgWorker.RunWorkerAsync();
backgroundWorkerで動作しますか?
private void buttonRename_Click(object sender, EventArgs e)
{
backgroundWorker1.RunWorkerAsync();
}
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
foreach (ListViewItem myitem in listView.Items)
{
try
{
//Rename
}
catch
{
}
}
}
物事を尋ねるための回答を投稿しないでください。新しい投稿を作成するところで、BG-WorkerのListViewには直接アクセスしません。たぶん、アイテムを反復して読み込むだけで例外がスローされることはありませんが、確かに良い方法ではありません。あなたのファイル名のリストを作成し、BG-Workerのこのリストで作業してください。 – HCL
@HCL、@ Eyla:しかし、正確な複製である質問は投稿しないでください。ここで元の質問を編集*して、あなたが思いついたコードを追加する必要があります。 –
@コードグレー:それは本当に正確な複製ですか?最初の質問はアニメーションgifに関するものでした。誰かが答えた後に変更される質問は好きではありません。これは、コンテキストの外にあるため、ほとんどの回答を無効にします。私はこれが最初の質問に答えた人々のために公平だとは思わない。 – HCL
これについて語っている記事がありますか?私はそれをどうやって行うのかわからないので – Eyla