FolderBrowserDialogの問題?それとも・・・ への返答
投稿で使用できる特殊コードの説明。(別タブで開きます。)
以下の返答は逆順(新しい順)に並んでいます。
投稿者 Adac  (社会人)
投稿日時
2016/12/25 17:01:12
魔界の仮面弁士さん、情報をありがとうございます。
発生しているのが、ntdll.dllということはわかっているのですが、
発生しないマシンもあり、使用頻度が低い機能での問題なので
調査が先延ばしになっています。
いずれ何らかの対策が必要になると思われますが、マシンに
依存しているとなると、運用対処になるんじゃないかと思って
います。
いろいろありがとうございました。
発生しているのが、ntdll.dllということはわかっているのですが、
発生しないマシンもあり、使用頻度が低い機能での問題なので
調査が先延ばしになっています。
いずれ何らかの対策が必要になると思われますが、マシンに
依存しているとなると、運用対処になるんじゃないかと思って
います。
いろいろありがとうございました。
投稿者 魔界の仮面弁士  (社会人)
投稿日時
2016/12/19 09:56:56
> 職場のPCだけではなく、自宅のWin10、VS2015でも発生しています。
複数環境でテストしましたが、こちらの環境では再現しませんでした。
> この現象は私だけでしょうか?
> エクスプローラでも発生することがあります。
シェル拡張(Shell Extensions)の問題によって
この手の問題が引き起こされることがあります。
エクスプローラーでも発生するのなら、可能性は高いかと。
こうした問題の調査手順が下記に纏められていますので
参考にしてみては如何でしょうか。
その中の幾つかは既に実施済みかも知れませんが。
http://jihi4541.blog.fc2.com/blog-entry-4.html
ちなみに、上記のページの障害原因となっていた cymon.sys に関する情報はこちらです。
今回の事象とは異なるため、別の要因かも知れませんが、一応参考までに。
https://www.cyphertec.co.jp/news/cymon_revision.html
https://social.msdn.microsoft.com/Forums/ja-JP/d52ef8d8-e4a1-40f8-b7dc-17c80fcc3934/visual-studioos?forum=vsgeneralja
複数環境でテストしましたが、こちらの環境では再現しませんでした。
> この現象は私だけでしょうか?
> エクスプローラでも発生することがあります。
シェル拡張(Shell Extensions)の問題によって
この手の問題が引き起こされることがあります。
エクスプローラーでも発生するのなら、可能性は高いかと。
こうした問題の調査手順が下記に纏められていますので
参考にしてみては如何でしょうか。
その中の幾つかは既に実施済みかも知れませんが。
http://jihi4541.blog.fc2.com/blog-entry-4.html
ちなみに、上記のページの障害原因となっていた cymon.sys に関する情報はこちらです。
今回の事象とは異なるため、別の要因かも知れませんが、一応参考までに。
https://www.cyphertec.co.jp/news/cymon_revision.html
https://social.msdn.microsoft.com/Forums/ja-JP/d52ef8d8-e4a1-40f8-b7dc-17c80fcc3934/visual-studioos?forum=vsgeneralja
投稿者 YuO  (社会人)
投稿日時
2016/12/19 03:04:35
そもそも,.NET Frameworkの例外すら発生せずに終了するのでしょうか。
そのような状況はあまり考えにくいのですが。
例外が発生しているのであれば,Visual Studioの例外アシスタントで例外の詳細をコピーしてここに貼り付けることで,もう少し情報が出てくるかもしれません。
少なくとも,強制終了するような場合には,イベントログのWindowsログ/Applicationに,レベル:エラー,ソース:Application Errorのようなイベントが記録されているはずですが……。
そのような状況はあまり考えにくいのですが。
例外が発生しているのであれば,Visual Studioの例外アシスタントで例外の詳細をコピーしてここに貼り付けることで,もう少し情報が出てくるかもしれません。
少なくとも,強制終了するような場合には,イベントログのWindowsログ/Applicationに,レベル:エラー,ソース:Application Errorのようなイベントが記録されているはずですが……。
投稿者 Adac  (社会人)
投稿日時
2016/12/18 17:53:39
YuOさん、返事ありがとうございます。
提示いただいたソースでも自宅PCでは同様の状態です。
PC固有の問題であればよいのですが、すでに職場と自宅の
2台で発生するので、どうしたものかと思っています。
他のフォルダ選択用のコードも確認しようかと思っています。
提示いただいたソースでも自宅PCでは同様の状態です。
PC固有の問題であればよいのですが、すでに職場と自宅の
2台で発生するので、どうしたものかと思っています。
他のフォルダ選択用のコードも確認しようかと思っています。
投稿者 YuO  (社会人)
投稿日時
2016/12/18 01:26:21
VS2015 on Windows 10で,Windows Formsアプリケーションのプロジェクトを作成し,
Button { Name = "Button1" }とLabel { Name = "Label1" }を作り,コードビハインドを
実際に発生するコードを張るなりしてみてはどうでしょうか。
ぱっと思いつくのはShowDialogの戻り値を見ずにそのままディスクアクセスを実際に行ってIOExceptionが発生しているがそれをCatchしていない,というパターンですが,それであればVisual Studioが例外の未Catchを検出してダイアログを出すので,「動作が終了しました」などとはならないですしね……。
Button { Name = "Button1" }とLabel { Name = "Label1" }を作り,コードビハインドを
Option Compare Binary
Option Explicit On
Option Infer On
Option Strict On
Imports System
Imports System.Windows.Forms
Public Class Form1
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Using dlg As New FolderBrowserDialog
If dlg.ShowDialog(Me) <> DialogResult.OK Then
Exit Sub
End If
Label1.Text = dlg.SelectedPath
End Using
End Sub
End Class
として試してみましたが,例外は発生しませんでした。実際に発生するコードを張るなりしてみてはどうでしょうか。
ぱっと思いつくのはShowDialogの戻り値を見ずにそのままディスクアクセスを実際に行ってIOExceptionが発生しているがそれをCatchしていない,というパターンですが,それであればVisual Studioが例外の未Catchを検出してダイアログを出すので,「動作が終了しました」などとはならないですしね……。
投稿者 Adac  (社会人)
投稿日時
2016/12/17 18:08:34
Win7上でVisualBasic2013、.NET Framework 4.5で開発しています。^^;
フォルダ選択の必要があり、FolderBrowserDialogを使用したいのですが。
using dlg as new FolderBrowserDialog
dlg.ShowDialog()
end using
のようなコードを書きました。
実行すると、ダイアログが表示されてフォルダを選択できます。
ここまでは問題はありません。
ダイアログでディスクが入っていない光学ドライブを指定すると
そのドライブがでてきて、ディスクを挿入してください。
と表示されます。
ここで、キャンセルをクリックしてメッセージボックスを閉じます。
そして、フォルダ選択ダイアログで選択してOKしても、キャンセル
しても、プログラムが「動作が終了しました」で終了してしまいます。
デバッグでもリリースでも、初期フォルダを設定等にも関係なく
発生します。
職場のPCだけではなく、自宅のWin10、VS2015でも発生しています。
この現象は私だけでしょうか?
また、Windows7のエクスプローラでも発生することがあります。
もしかして、私が知らないだけで有名な話なのでしょうか?
フォルダ選択の必要があり、FolderBrowserDialogを使用したいのですが。
using dlg as new FolderBrowserDialog
dlg.ShowDialog()
end using
のようなコードを書きました。
実行すると、ダイアログが表示されてフォルダを選択できます。
ここまでは問題はありません。
ダイアログでディスクが入っていない光学ドライブを指定すると
そのドライブがでてきて、ディスクを挿入してください。
と表示されます。
ここで、キャンセルをクリックしてメッセージボックスを閉じます。
そして、フォルダ選択ダイアログで選択してOKしても、キャンセル
しても、プログラムが「動作が終了しました」で終了してしまいます。
デバッグでもリリースでも、初期フォルダを設定等にも関係なく
発生します。
職場のPCだけではなく、自宅のWin10、VS2015でも発生しています。
この現象は私だけでしょうか?
また、Windows7のエクスプローラでも発生することがあります。
もしかして、私が知らないだけで有名な話なのでしょうか?
FolderBrowserDialog を呼び出す際に、
を実行してみたとき、STA と表示されるかどうかを確認しておいてください。
通常は STA ですが、そうでない場合、FolderBrowserDialog を正しく呼び出せません。
PC によって異なる物では無いはずですが、念のため。
> 発生しているのが、ntdll.dllということはわかっているのですが、
先の Shell Extensions 問題の他、Office IME を Microsoft IME に
切り替えることで改善した例もあるそうです。
https://www.pcreview.co.uk/threads/error-when-using-folderbrowserdialog.1315092/
http://www.hori-tec.net/works/archives/2012/0929_230059.html
http://yoshida.blog.itsrv.net/archives/201.html