3

C# の Windows フォーム アプリケーションに問題があります。このアプリケーション内にはタブ付きブラウザがあります。ここで、ループ (次の URL を計算する操作を行う場所) で、AddTab の間に遅延を追加できるようにしたいと考えています。

IE

 foreach(Urls url in Links){

        // Do something with url
         if(url.Host == "google"){ //if host is google until start the 
                                   // next AddTab i would wait 5 SEC
             addTab(url);
           //Here i Tried to use Sleep Thread , While(TimeCur-TimePre) {} but i always 
           // get Freezing and the other Tabs dont continue the loading
             Wait 5 Seconds in somehow
         }
}

私が書いたように、スレッドスリープを使用したくないのは、フォームアプリケーションがフリーズするためです。TimeCur-TimeSaved+(x Second) で既にタイム トリックを使用しましたが、これもフォームをフリーズします。

人々がタイマーを使用するように言っているトピックをたくさん見たので、それらを使用しようとしました(結果はありません、何か間違っているかもしれません)

このループに何を追加して、何もフリーズせずに AddTab 間の開始を遅らせることができますか?

4

2 に答える 2

6

(ツールボックスから) Windows フォーム タイマーを使用します。プロパティで、間隔設定を設定します。次に、フォーム デザイナーでそれをダブルクリックします。これにより、間隔時間が経過したときに (別のスレッドで) 起動されるイベント ハンドラーが作成されます。ここで作業を行うことができ、フォームはアクティブなままです。

于 2011-11-23T00:06:43.330 に答える
4
    var thread = new System.Threading.Thread(p =>
    {
        lock (YourTabControl)
        {
            Action action = () =>
            {
                addTab(url);
            };
            this.Invoke(action);
            if(url.Host == "google")
                System.Threading.Thread.Sleep(5000);
        }
    });
    thread.Start();
于 2011-11-23T00:47:49.137 に答える