• ベストアンサー

IsBusyプロパティ

BackgroundWorker.IsBusy の意味がいまいちわかりません。 このページの http://msdn.microsoft.com/ja-jp/library/system.componentmodel.backgroundworker.isbusy(v=vs.110).aspx?cs-save-lang=1&cs-lang=csharp#code-snippet-2 非同期操作を実行中の意味を教えてください。 この命令を使って、ウェブブラウザーがページを完全に表示するまで待たせるという命令を作りたいと考えています。

質問者が選んだベストアンサー

  • ベストアンサー
  • Glory_777
  • ベストアンサー率50% (105/208)
回答No.1

Silverlight + C#での開発を行なうときに使いました。 開発環境が、それとあっているか分かりませんが、以下は想像で続けます。 また、手元に開発環境が無いので、スペルなど、うろ覚えですのでご了承ください。 ご質問の意図を察すると、BackgraoudWorkerではなく、 普通にコントロールのイベント処理をハンドルするほうが良いでしょう。 もし独自に判定プログラムを作り、これを並行動作させると言うならば、判定処理は独自で工夫を。 1.コントロールのイベント処理で判定する方法 Silverlightを使う場合は、Loaded イベントや SizeChennged とかでひっかかります。 各コントロール個別に設定できますので、どれに掛けるかを工夫し、タイミングなどを自分で試す。 泥臭いですが、結構いけます。 イベント処理の中では、各コントロールにはActualWidth やActualHight と言うプロパティがあり、 これが表示サイズになっていれば、そのコントロールは表示が終わっているとか、 自分が使用しているコントロールの特徴を見ながらコツを掴んでいくのが良いかと思います。 とりあえず、 Layoutrootも含め、Loded、SizeChangedを全て設定し、それぞれのイベント処理コールバックで、 Stringメッセージを作り、表示させるなどをすると、何時どのタイミングで呼ばれるかわかります。 ウェブページが全て表示されたときに該当したハンドル処理内で、 プログラム開始をすると良いでしょう。 2.BackgraoudWorkerの一般的な使い方 では、BackgroundWorkerはといいますと、 処理の重いプログラムを内部で走らせるとき、 ウェブページの動作が止まってしまうため、並行動作をさせるときに使います。 これを非同期処理と読んでいます。 例えば、ウェブページでファイルをロードしたり、データを集計したり、検索したりなど、 処理に時間が掛かるプログラムを作ったときに活躍します。 こういう場合は、GUI処理が重くなったり、止まったりします。 そこで対象となる重い処理だけを分離し、BackgroundWokerの下で動かします。 BackgroundWorkerでは、処理中途、終了に関してコールバックが定義できます。 処理途中は、処理の進行状況を表示するときのためのコールバック処理です。 私は無視して空にしています。 終了に関しては、結構重要です。ここで一括して色々できます。 処理終了待ちの待機として、ご提示MSのサンプルの様に、 isBusy のプロパティをチェックする事も可能ですが、これはしません。あくまでもサンプル。 通常は、GUI処理にブロックを掛けないと、再突入などの誤動作をしますから、 ・全GUIをブロックする ⇒BusyIndicator 参照 ・ボタンやコントロール単位でブロックする ⇒isEnabled = false などで対応し、さきほど述べたコールバック処理でこれらを解放するのがスマートです。 3.まとめ ・Silverlightの表示終了タイミングを得るためにはイベント処理を使う。 ・内部処理が終わるまでGUI動作を制御する場合に、BackgroundWorkerを使う。 で考えてください。 以上、ご参考までに。

satisfied999
質問者

お礼

なるほど、思ったより単純にはいかなそうです。 ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • ビジュアルC#スタジオ エラー

    初心者丸出しの質問でもうしわけありません。 private void button2_Click(object sender, EventArgs e) { webBrowser1.DocumentText = "<html><body>Please enter your name:<br/>" + "<input type='text' name='userName'/><br/>" + "<a href='http://www.microsoft.com'>continue</a>" + "</body></html>" webBrowser1.Navigating += new WebBrowserNavigatingEventHandler(webBrowser1_Navigating); } 上のソースの最後のwebBrowser1_Navigatingが「コンテキスト内に存在しません」というエラーがでて解決できずに困っています。 webBrowser1はちゃんとデザインが面のほうには作っており、ほかに何をしたらいいか分かりません。 チェックするポイントなどありました教えてください。 ソースは、http://msdn.microsoft.com/ja-jp/library/system.windows.forms.webbrowser.documenttext(v=vs.110).aspx?cs-save-lang=1&cs-lang=csharp#code-snippet-2 からもってきたものです。

  • コンソールアプリケーションプロジェクトの扱い

    MEFを勉強しています。ビジュアルスタジオ2012でC#使ってます。 http://msdn.microsoft.com/ja-jp/library/dd460648(v=vs.110).aspx?cs-save-lang=1&cs-lang=csharp#code-snippet-2 このサイトを参考にと聞き読んでいる途中なのですが、既にできない気がしてきています。それはなぜかというと、最初のほうにDLできる、完成した状態をDLしたのですが、どうやって使えばいいのかさっぱりわからないからです。 今まで作ってきたC#のアプリはどれも、まずUIから入るような形だったので扱い方がまったくわかりません。たぶん「コンソール アプリケーション プロジェクト」というものがわかっていないからだと思います。 ビジュアルスタジオを開いて開始をおしてみたものの、 「型 'System.IO.DirectoryNotFoundException' のハンドルされていない例外が mscorlib.dll で発生しました 追加情報: パス 'C:\USERS\SOMEUSER\DOCUMENTS\VISUAL STUDIO 2010\PROJECTS\SIMPLECALCULATOR3\SIMPLECALCULATOR3\EXTENSIONS' の一部が見つかりませんでした。」 という僕の理解を超えるメッセージで洗練を受けました。角界でいうところの可愛がりにほかなりません。 めげづに読んでやっていけばちゃんとすべて理解できるものなのでしょうか?それともこれにチャレンジする前に踏まなきゃいけないステップをたくさん踏まずにきてしまったのでしょうか? 詳しい方、MEFをすでに実践されている方、なにより親切な方。どうかヒントをください。

  • アイコンの意味がわからない msdn

    例えば、 http://msdn.microsoft.com/ja-jp/library/microsoft.visualbasic.filesystem_members(v=vs.85).aspx のページなのですが、このアイコンの説明のページがないのですが、 どういう意味か説明しているページはありますか?

  • ASP.netにて質問です。

    WEB開発が初心者でいろいろ悩んでいます。 ・ASP.net2.0 ・C# 現在、ログインページとメインページがあります。 今後、ページが増えていくので、 メインページ内で処理していたことを全ページで使用できるように APP_code配下へクラスを作成し、処理を移植しました。 そこで、メインページのaspx.csでは問題なく出来ていたが、APP_code配下のcsでは出来なくなってしました。 [内容] object ses = Session["hoge"]; ←この処理が出来なくなってしまったので、下記に変更 object ses = System.Web.HttpContext.Current.Session["hoge"];  ⇒結果は「NullReferenceExceptionはユーザーコードによってハンドルされませんでした。」   となってしまいます。   System.Web.HttpContext.Current.Session["hoge"]の結果はNullなのが問題だとは思うのですが、   元のaspx.csで実装されていた時はNullであっても特に問題はありませんでした。 また、Response.Redirect("hoge.aspx")についても System.Web.HttpContext.Current.Response.Redirect("hoge.aspx") と修正したが、hoge.aspxへリダイレクトしません。 対処方法を教えて頂きたく思います。

  • msdnのヘルプについて

    都合上、オフラインのヘルプではなく、msdnでヘルプを見てるのですが たとえばアクセスのRunSQLメソッドのヘルプを見たければ、 http://msdn.microsoft.com/ja-jp/library/office/ff194626.aspx のように、msdnのオフィスのページのヘルプを発見できましたが、 違う例えで、VBA.Strings.UCase関数のヘルプを見たい場合は、 オフィスのページのヘルプは用意されてないのでしょうか? UCase関数に関しては、 http://msdn.microsoft.com/ja-jp/library/53e2ew8a(v=VS.90).aspx このページしか見つけられません。 内容はVisual Basicのものですが、VBAライブラリーのものは、VBのページをVBAに読み替えてるしかないのでしょうか? 私は、VBはよく知らないので、VBAのヘルプのページがあればな。と思うのですが、 無理でしょうか?

  • BTOなどのカスタマイズ画面の「TM」って何?

    http://www1.jp.dell.com/jp/ja/home/desktops/studio-xps-9100/pd.aspx?refid=studio-xps-9100&s=dhs&cs=jpdhs1 たとえばこういうページ↑のスペック表で、CPUやGPUのところの「(TM)」ってどういう意味ですか? 商標かなにかでしょうか?

  • c#のToString()メソッド

    http://msdn.microsoft.com/ja-jp/library/ms173154(v=vs.90).aspx のページによると C# では、すべてのオブジェクトが ToString メソッドを継承します。このメソッドは、該当するオブジェクトの文字列形式を返します。たとえば、int 型の変数はすべて ToString メソッドを持ち、次のようにその変数の内容を文字列として返すことができます ↑と書いてあるのですが、C言語しか知らない自分にとってint型の変数が関数、メソッドを持つ、 という概念が理解できません。これはオブジェクト指向の話なのでしょうか?クラスを理解すると わかるようになりますか? どなたかよろしくお願いします。

  • オランダ語の判る方に「チケット取得」で質問です。

    こちらのページなのですが、 http://webshop.topticketline.nl/shows/showtickets.aspx?sh=MAM&v=RIXTHEATER&p=EBTU2005711 いくつかの席のランクがあって、beschikbaar は there are tickets available で、beperkt は there are not much tickets available という意味だとわかりました。その先のクレジットカードでの購入順序を教えてください。

  • SMバス コントローラに黄色い?マーク

    デバイスマネージャーのSMバス コントローラに黄色い?マークがついています。 少し調べたのですが、 このパソコン(XP HOME)のチップセット Intel G31 & ICH7 のインテル&reg;チップセット・ソフトウェア・インストール・ユーティリティー をダウンロードするみたいなのですが、 http://support.intel.co.jp/jp/support/chipsets/sb/CS-026488.htmのページからの、 http://downloadcenter.intel.com/filter_results.aspx?strTypes=all&ProductID=816&OSFullName=Windows*+XP+Home+Edition&lang=jpn&strOSs=45&submit=Go%21 の中のどれなのか分かりません。 教えてください、よろしくお願いします。

  • Windpws10の「アップグレードの延期」

    Winsows10の設定での「アップグレードの延期」は「チェックを入れている間はアップグレードされない」という意味か、「一度でもチェックを入れたらチェックを外しても4ヶ月はアップグレードを待たされる」と言う意味か、どちらでしょう。 下記マイクロソフトのサイトを読むと、「[アップグレードを延期する] 設定は、PC をアップグレードする時期を直接制御します。 アップグレードを延期するように構成されていないコンピューターは、最初の Current Branch リリースの時点でアップグレードされます。アップグレードを延期するように構成されているコンピューターは、4 か月後にアップグレードされます。」と書いてありますが、後者のようにも読めるのですが。 https://technet.microsoft.com/library/mt574263(v=vs.85).aspx ちなみに現在のバージョンは1511で「アップグレードの延期」にチェックを入れています。