В настоящее время мы обрабатываем документы с большими словами в программе c #.
Во время обработки я получаю сообщение «Microsoft Windows перестала работать».
Программа считывает текстовый документ на основе комментариев, добавленных к документу, обрабатывает изображения и другой текст в документе, а также создает множество независимых текстовых документов с содержанием из исходного документа.
В чем причина проблемы? Это потому, что текстовые документы создаются, открываются и закрываются так часто?
Шаги программы:
1) Скопировать содержание, на которое ссылается комментарий в документе, в буфер обмена
comment.Scope.CopyAsPicture();
2) Затем процесс преобразует содержимое в «html» или «обычное» изображение с помощью
public String _GetContentFromClipboard()
{
String text = "";
if (Clipboard.GetData(DataFormats.Html) != null)
{
text = Clipboard.GetData(DataFormats.Html).ToString();
}
else
{
IDataObject iData = Clipboard.GetDataObject();
if (iData.GetDataPresent(DataFormats.Bitmap))
{
Image image = iData.GetData(DataFormats.Bitmap, true) as Image;
String imageFile = Guid.NewGuid().ToString() + ".jpg";
image.Save(imageFile, System.Drawing.Imaging.ImageFormat.Jpeg);
text = "<img src=\"" + imageFile + "\" width=\"" + image.Width + "\" height=\"" + image.Height + "\" />";
}
}
return text;
}
3) Также иногда сохраняйте содержимое из буфера обмена в новый документ Word
public String SaveClipboardContentToDoc(bool removeComments)
{
Object docName = GeneralUtil.GetTempFileWithoutExtension() + ".docx";
Microsoft.Office.Interop.Word.Application oWord = new Microsoft.Office.Interop.Word.Application();
Microsoft.Office.Interop.Word.Document oDoc = new Microsoft.Office.Interop.Word.Document();
oDoc = oWord.Documents.Add(ref missingObj, ref missingObj, ref missingObj, ref missingObj);
oWord.DisplayAlerts = Microsoft.Office.Interop.Word.WdAlertLevel.wdAlertsNone;
oWord.Visible = false;
oDoc.ActiveWindow.Selection.Paste();
if (removeComments == true)
{
foreach (Comment selectionComment in oDoc.Comments)
{
selectionComment.Delete();
}
}
oDoc.SaveAs(ref docName, ref missingObj,
ref missingObj, ref missingObj, ref missingObj, ref missingObj, ref missingObj,
ref missingObj, ref missingObj, ref missingObj, ref missingObj, ref missingObj,
ref missingObj, ref missingObj, ref missingObj, ref missingObj);
((Microsoft.Office.Interop.Word._Document)oDoc).Close(ref missingObj, ref missingObj, ref missingObj);
((Microsoft.Office.Interop.Word._Application)oWord).Quit(ref missingObj, ref missingObj, ref missingObj);
return docName.ToString();
}
Начальное предупреждающее сообщение:
"Microsoft Windows has stopped working"
Windows can check online for a solution to the problem and try to recover your information.
Check online for a solution and close the program
close the program
Debug the program
Then clicking on debug leads to " "An unhandled win32 execption occurred in WINWORD.EXE [7372]"