友人のマシンで 1 つの Windows フォーム アプリを作成します。彼のマシンでは問題なく動作します。しかし、自分のマシンで同じアプリを実行しようとすると、_dialog.ShowDialog()
「アクセス違反例外が保護されたメモリの読み取りまたは書き込みを試みました。これは多くの場合、他のメモリが破損していることを示しています...」のような例外がスローされました。ネットでこのエラーを確認したところ、次の解決策が見つかりました。
1) [ツール] メニュー -> [オプション] -> [デバッグ] -> [全般] -> [モジュールの読み込み時に JIT 最適化を抑制する] リンクのチェックを外します: http://social.msdn.microsoft.com/Forums/en-US/8789ea67-fbc5- 4a7b-a4eb-d4a8a050d5c1/attempt-to-read-or-write-protected-memory-this-is-indicating-that-other-memory-is-corrupt . 私のマシンで完了しましたが、うまくいきませんでした。
2)保護されたメモリの読み取りまたは書き込みを試みました。フレームワーク 2.0、..3.5 用のhttp://support.microsoft.com/kb/971030をインストールしましたが、言及リンクからダウンロード製品が見つかりません。
私のマシン構成: VS 2010(SP1)、フレームワークは 4.0 を使用、DB は MS-Access を使用しました。
コードのブロック:
private void SetAttachmentInfo()
{
Dictionary<string, object> _fileInfo = new Dictionary<string, object>();
OpenFileDialog _dialog = new OpenFileDialog();
var _fileName = (object)(null);
var _fileData = (object)(null);
var _fileDataLength = (object)(null);
_dialog.Multiselect = false;
_dialog.Filter = "Office Files (*.doc;*.xls;*.ppt;*pdf;*txt) |*.doc;*xlsx;*.xls*.ppt;*pdf;*.txt;|Image Files (*.jpeg;*.png;*.jpg;*.gif) |*.jpeg;*.png;*.jpg;*.gif |All File|*.*";
if (_dialog.ShowDialog() != DialogResult.Cancel)
{
_fileInfo = GetAttachmentFileInformation(_dialog.FileName);
_fileInfo.TryGetValue("FileName", out _fileName);
_fileInfo.TryGetValue("FileData", out _fileData);
_fileInfo.TryGetValue("Lenght", out _fileDataLength);
FileName = Convert.ToString(_fileName);
FileData = (_fileData != null && (_fileDataLength as int?) > 0) ? (byte[])_fileData : (byte[])null;
AttachmentLength = _fileDataLength as int?;
}
}
役立つヘルプはありますか?