C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

FolderBrowserDialog時のエラー

[トピック内 4 記事 (1 - 4 表示)]  << 0 >>

■83893 / inTopicNo.1)  FolderBrowserDialog時のエラー
  
□投稿者/ だんご (1回)-(2017/04/20(Thu) 22:51:35)

分類:[VB.NET/VB2005 以降] 

FolderBrowserDialogを同じフォームで2回目に開いた瞬間に100%、又は1回だけ起動、終了し、メインフォームを閉じた瞬間に時々エラーが発生します。
ただしデバッグ時だけであり、単体でソフトを起動するとこのエラーは出ません。

エラー内容は以下の通りです。

DisconnectedContextが発生しました。
マネージ デバッグ アシスタント 'DisconnectedContext' が 'C:\Users\User\プロジェクト\プロジェクト名\bin\Debug\App.exe' で問題を検出しました。

追加情報:この RuntimeCallableWrapper の COM コンテキスト 0xf24b0770 への変換に失敗して、エラー 起動されたオブジェクトはクライアントから切断されました。 (HRESULT からの例外:0x80010108 (RPC_E_DISCONNECTED)) が発生しました。これは、通常この RuntimeCallableWrapper が作成された COM コンテキスト 0xf24b0770 が切断されたか、他の処理を実行していてビジーであることが原因です。現在の COM コンテキスト (COM コンテキスト 0xf24b02d0) からインターフェイスを解放しています。これは、破損またはデータの損失を発生させる可能性があります。この問題を回避するには、その内部に存在する COM コンポーネントを示す RuntimeCallableWrappers の使用が完了するまで、すべての COM コンテキスト、アパートメント、およびスレッドが完全に有効であり、コンテキスト変換に使用できることを確認してください。

FolderBrowserDialogはネットの使用例と変わらない使い方をしています。
ただし、Newをした後、ShowDialogを起動する前に
Description、RootFolder、SelectedPathいずれかを設定するとエラー、何もせずそのままShowDialogをするとエラーが出なくなります。


同じ現象が以下のURLで起きていますが解決には至っていないようです。さらに言えば7年も前の記事です。
http://stackoverflow.com/questions/984415/error-after-displaying-a-folderbrowserdialog?rq=1
ちなみにDisposeはあってもなくてもエラーは出ます。

以下の解決法は関係ありませんでした。
http://jihi4541.blog.fc2.com/blog-entry-3.html

何か解決のヒントを教えてください。
よろしくお願いいたします。

.Net4.5
Windows10 64bit
引用返信 編集キー/
■83900 / inTopicNo.2)  Re[1]: FolderBrowserDialog時のエラー
□投稿者/ 魔界の仮面弁士 (1266回)-(2017/04/21(Fri) 10:59:31)
No83893 (だんご さん) に返信
> 'C:\Users\User\プロジェクト\プロジェクト名\bin\Debug\App.exe' で問題を検出しました。
プロジェクトをユーザーフォルダに直接配置するのは珍しいですね。
オプション設定の「プロジェクトの場所」で既定のパスを変更されているのでしょうか。

初期パスとしては、
 C:\Users\USER\Documents\Visual Studio 20xx\Projects\ソリューション\プロジェクト\bin\Debug\
 C:\Users\USER\Documents\Visual Studio 20xx\Projects\プロジェクト\bin\Debug\
のように、マイ ドキュメント配下に置かれるはずですが、
どのパスで実行した場合も特に変化は無さそうですか?


また、アンチウィルスソフトウェアを利用している場合は、
プロジェクトのフォルダーを除外指定してみては如何でしょう。
(FolderBrowserDialog へのアクセスに対して、何かの監査処理が行われていて、
 それが Visual Studio のデバッガと競合したのでは無いか…という妄想してみました)


> ただしデバッグ時だけであり、単体でソフトを起動するとこのエラーは出ません。
デバッグ時だけですか…。
それでは、App.vshost.exe を使わない場合はどうなりますか?

具体的には、プロジェクトのプロパティにて[デバッグ]タブにある
『Visual Studio ホスティング プロセスを有効にする』を Off にするということです。


> FolderBrowserDialogはネットの使用例と変わらない使い方をしています。
デザイン時にフォームに貼って使う方法と
使うたびに New する方法とがありますね。どちらでしょうか。

前者は、Dispose 処理が Form によって自動的に行われますが、
後者は Using あるいは Dispose の呼び忘れに注意が必要です。


> 以下の解決法は関係ありませんでした。
そこのサイトでは、セーフモードでは再現しなかったと述べられていますが、
今回の事象はセーフモードでも発生する状態なのでしょうか。
http://jihi4541.blog.fc2.com/blog-entry-4.html



> ただし、Newをした後、ShowDialogを起動する前に
> Description、RootFolder、SelectedPathいずれかを設定するとエラー、
> 何もせずそのままShowDialogをするとエラーが出なくなります。
手元の環境では再現しなかったので、もう少し追加情報を下さい。

・Visual Studio のバージョン(2012 とか 2017 とか)
・Visual Studio のエディション(Express とか Ultimate とか)
・Visual Studio のアップデートバージョン(Update 1 とか)
・Windows 10 のバージョン(1703 とか 1607 とか)
・ビルド時のプラットフォームを変更するとどうなるか(AnyCPU32BitPreferred、AnyCPU、x64、x86)
引用返信 編集キー/
■83913 / inTopicNo.3)  Re[1]: FolderBrowserDialog時のエラー
□投稿者/ なちゃ (209回)-(2017/04/22(Sat) 00:10:16)
念のため確認ですが、BackgroundWorkerとかTaskとか新しく作ったスレッドとか、ともかくGUIのスレッドとは別のスレッドから呼び出したりはしてないでしょうか?
※あるいはMainにSTAThreadがついてないとか、自作スレッドからSTAに設定せずにGUIを起動してたりとか。
引用返信 編集キー/
■83915 / inTopicNo.4)  Re[2]: FolderBrowserDialog時のエラー
□投稿者/ だんご (2回)-(2017/04/22(Sat) 18:34:02)
ご返信ありがとうございます。

追記になりますが、エラーの頻度は2回の起動に1回程度です。
気付きですがVisual Studioを立ち上げた後や、ホスティングプロセス有効後の最初の起動はエラーが出ないような気がします。

> プロジェクトをユーザーフォルダに直接配置するのは珍しいですね。
すみません。これはパスが複雑だったので簡略化する際に省きすぎてしまっただけです。
DropBoxの中にあったのでそのままUser直下にプロジェクトが来てしまいました。
ちなみにDropBoxの有無はエラーに関係ありませんでした。

アンチウィルスソフトウェアについてですが、リアルタイムスキャンを停止させ再度実験しましたが通常通りエラーは出ました。

> App.vshost.exe を使わない場合はどうなりますか?
実は最初からホスティングプロセスは無効にしています。
有効にしてもエラーは出ます。

> デザイン時にフォームに貼って使う方法と
> 使うたびに New する方法とがありますね。どちらでしょうか。
使うたびにNewをしております。Disposeは呼び出しています。

> 今回の事象はセーフモードでも発生する状態なのでしょうか。
すみません。これは「cymon.sys」が無いので関係なかったという意味でした。
セーフモードでの実行は「NuGetPackageパッケージは正しく読み込まれませんでした。」「デバッガーがlocalhost TCP/IP接続を作成できませんでした。64ビットデバッグでは、この接続が必要です。」と出て、そもそも起動できませんでした。

> 手元の環境では再現しなかったので、もう少し追加情報を下さい。

Microsoft Visual Studio Community 2015
Version 14.0.25431.01 Update 3

Microsoft .NET Framework
Version 4.7.02046

Windows10 バージョン 1703(OSビルド 15063.138)

です。

> ビルド時のプラットフォームを変更するとどうなるか
すみません。あまり詳しくないので勘違いかもしれませんが、タブの「ソリューションプラットフォーム」は「Any CPU」しかありませんでした。
DebugモードでもReleseモードでもエラーは出ました。
Ctrl+F5起動ではエラーは出ません。

> GUIのスレッドとは別のスレッドから呼び出したりはしてないでしょうか?
ダイアログのボタンクリックで呼び出しますので別のスレッドではないはずです。

Visual Studioを介さなければエラーが出ませんので最悪無視することも考えています。
引用返信 編集キー/

このトピックをツリーで一括表示


トピック内ページ移動 / << 0 >>

このトピックに書きこむ