2016-05-29 7 views
-1

私はC#-Winformでコーディングを使っていくつかのメカニズムを作成しなければならないという状況があります。特定のwinformを起動すると指定された秒数以上(例えば10秒) (私はフォームの表示を完全に取得しない限り、物事のアヤックスローダーの種類)。 (このフォームは、多くの計算の後にデータを表示するので、その間にいくつかのローダーを表示したいと考えています)。winformの起動に5秒以上かかるかどうかを確認する方法?

I successfully designed the circle like loader。問題は次のとおりです。

(1)フォームの起動には10 seconds以上が必要ですか?だから私はローダーを起動します。

(2.)別の問題は、プロジェクトが非常に大きく、個々のフォームごとにローダーのコードを書く代わりに、共通のすべてのフォームで機能させる必要があることです。現在起動されているフォームに10秒以上かかると、ローダーが表示されます(各フォームに表示するコードを書き込まずに10秒以上かかると、すべてのフォームで動作するはずです)フォームとして、ローダーが表示されます。

これら二つの機能を達成するためにどのように?

+0

なぜ10秒を待つのか?撮影時間が10.5秒の場合はどうなりますか?ユーザーが私がフォームを完了するのを待っていて、0.5秒間だけ私はしばらく時間がかかるという表示を得る。あなたが行う必要がある計算の数に基づいてローダーを表示することはできませんか?また、コンストラクターで重い作業はどこで行われますか? OnLoad?このようにコードを表示して、これまでに何を出してきたのですか(タイマー?) –

+1

なぜこのようなことに気をつけたのですか?標準的なイディオムは、*ビジー*カーソルを表示することです。確かにあなたはそれを見ました。ロード操作を行う前に表示するだけで、ロードが完了すると、ビジーカーソルは自動的に消えます。または、少し読み込んだアニメーションを表示して、タスクを実行し、読み込まれたアニメーションが終了したらそれを削除することができます。時間切れコードを書くのは価値がありません。 –

+0

@CodyGrayプロジェクトが非常に大きいので、個々のフォームにコードを書くことはできません。ローダーをコーディングするすべてのフォームではなく、グローバルに達成するためのソリューションはありますか? – user3085082

答えて

1

あなたは、データがプロになっている場合にのみ、これを行うことができますバックグラウンドスレッドで停止すると、フォームがブロックされ、変更を加えることができません。

それは別のスレッドで仕事をしているのであれば、以下を試してみてください。

  1. は、基本クラスを作成し、実装します。

    1. a。 DataLoadedなどと呼ばれるフラグを作成します。
    2. b。 OutOfTimeというフラグを書き込みます。
    3. c。ローダが表示されるのに必要なコントロールを動的に作成します。
  2. ベースクラスでは、(3つの異なるものがあり、賢明に選択する)タイマーを使用し、X秒でメソッドを呼び出します。
  3. !OutOfTimeを設定すると、データがロードされます。DataLoaded = trueに設定します。次の手順で表示された場合は、ローダを閉じる/非表示にします。
  4. Timerのイベント/メソッドが呼び出されると、データがロードされているかどうかがチェックされます。そうでない場合、処理中のX秒間に処理が行われていることを示します。

ジャストアイデアは、おそらく最初で仕事を文句を言わないが、それは私がどうなるのか、多かれ少なかれです:)

+0

問題は..データがロードされているかどうかを知る方法? (フォームが10秒間にロードされない場合)、フォームがロードされているかどうかを知る方法? – user3085082

+0

True xD私は知っていました。それは簡単すぎるC: 申し訳ありません、間違って入力してください どのようにデータを取得していますか? あなたが使用しているフレームワークは 詳細を教えてください あなたはいくつのフォームを持っていますか?すべてのフォームに小さなthis.DoneLoading()を呼び出すだけです。 –

+0

返信ありがとうございます。(1)私は、それぞれのクリックで個々のフォームを与えるいくつかのメニューを持っているメインウィンドウのform.which(Form1 frm1 =新しいForm1(); frm.showdialog();そして、このフォームは、ユーザーからの計算のためにいくつかのデータを取った後に別のフォームをポップアップし、第3フォームをポップアップしてOKボタンをクリックすると計算結果を表示します。このボタンのOKクリックで数学的計算をすると時間がかかり、ポップアップが非常に遅くなります)、このようなフォームが100個あるので、私の上司は各フォームの背後にコーディングするのではなく、グローバルなソリューションを求めています。私は.NET 4.5を使用しています – user3085082

関連する問題