2010-12-31 33 views
2

まあ、私がやろうとしているのは、ファイルがいっぱいのディレクトリを読み込んでいる間にアニメーションgifを表示することですが、UIはフリーズしますが、これは大丈夫ですが、操作は終了する。何か案は?読み込み中にアニメーションを表示する

私はVS2010 C#

答えて

0

実行列挙を使用してWindowsフォーム上でそれをやっているが、別のスレッドで、メインスレッドでGUIを更新します。

+0

これについて語っている記事がありますか?私はそれをどうやって行うのかわからないので – Eyla

1

2つのオプションがあります。

  1. ファイル操作を処理する別のスレッドを開始します。

  2. は、定期的にファイルループ内でApplication.DoEvents()を呼び出します。これによりアプリは保留中のメッセージを処理してUIを更新しますが、ファイル処理ループの速度に悪影響を及ぼします。

私の電話から投稿するので、例のリンクはありません。

5

ここでは、ファイルを同期させる方法のコード例を示します。多分それがあなたを助けます。私は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(); 
0

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 
       { 
       } 
      }  
    } 
+0

物事を尋ねるための回答を投稿しないでください。新しい投稿を作成するところで、BG-WorkerのListViewには直接アクセスしません。たぶん、アイテムを反復して読み込むだけで例外がスローされることはありませんが、確かに良い方法ではありません。あなたのファイル名のリストを作成し、BG-Workerのこのリストで作業してください。 – HCL

+0

@HCL、@ Eyla:しかし、正確な複製である質問は投稿しないでください。ここで元の質問を編集*して、あなたが思いついたコードを追加する必要があります。 –

+0

@コードグレー:それは本当に正確な複製ですか?最初の質問はアニメーションgifに関するものでした。誰かが答えた後に変更される質問は好きではありません。これは、コンテキストの外にあるため、ほとんどの回答を無効にします。私はこれが最初の質問に答えた人々のために公平だとは思わない。 – HCL

関連する問題