У меня есть одна из самых странных ошибок, которые я когда-либо видел.Учет буфера обмена. Очистить() Outlook и Visual Studio
Посмотрите на это Windows Forms приложение, созданное с нуля:
static class Program
{
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
}
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
System.Windows.Forms.Clipboard.Clear();
}
}
Ничего особенного, просто очистка буфера обмена, когда кнопка нажата.
Теперь, если я запустил это в Debug из Visual Studio, несколько раз очистите буфер обмена, затем закройте приложение, затем попытайтесь закрыть Visual Studio, сбой в Visual Studio с исключением «Повреждение памяти». Это не происходит в 100% случаев, но когда это происходит, я больше не могу запускать Visual Studio, мне нужно перезагрузиться.
Это, похоже, также влияет на Outlook. Если у меня открыт Outlook, запустите это приложение, несколько раз очистите буфер обмена, затем вернитесь в Outlook, затем Outlook также выйдет из строя, и, как и Visual Studio, я должен перезагрузиться, чтобы снова использовать его.
Так что я начинаю очень подозревать, что класс Windows Forms Clipboard делает в методе Clear()
. Чтобы подтвердить свою теорию, я использовал класс Clipboard, который поставляется с WPF. я ссылка PresentationCore.dll в моем приложении WinForms, и заменить:
System.Windows.Forms.Clipboard.Clear();
с
System.Windows.Clipboard.Clear();
И теперь ни Visual Studio, ни перспективы аварий.
Я немного искал эту информацию и нашел this post без ясного решения проблемы.
Итак, я думаю, мой вопрос в том, является ли это настоящей ошибкой в классе WinForms Clipboard, или я чего-то не хватает?
Дополнительная информация:
- Visual Studio 2012
- Проект работает под .NET 4.0.
- Перспективы 2010
Перспективы аварии стеком вызовов:
Unhandled exception at 0x77a7e3be in OUTLOOK.EXE: 0xC0000005:
Access violation reading location 0x5c83d763.
[email protected]@8() + 0x2c bytes
[email protected]() + 0x7e bytes
[email protected]() + 0x14 bytes
mshtml.dll!ParseExpandProperty() + 0x2d6 bytes
mshtml.dll!PROPERTYDESC::HandleStyleComponentProperty() - 0xc2707 bytes
mshtml.dll!MSCSSParser::SetStyleProperty() + 0x268 bytes
mshtml.dll!MSCSSParser::Declaration() + 0x95 bytes
mshtml.dll!MSCSSParser::Write() + 0x8b0 bytes
mshtml.dll!BaseCSSParser::LoadFromStream() + 0x15a bytes
mshtml.dll!CStyleSheet::DoParsing() + 0x18b bytes
mshtml.dll!CStyleElementHelper::OnDwnChan() + 0x315 bytes
mshtml.dll!CStyleElementHelper::SetCssCtx() - 0x130a5f bytes
mshtml.dll!CStyleElementHelper::EnsureStyleDownload() + 0xfd bytes
mshtml.dll!CStyleElementHelper::AttachExternalStyleSheet() + 0x97 bytes
mshtml.dll!CLinkElement::HandleLinkedObjects() + 0xf0 bytes
mshtml.dll!CLinkElement::Notify() - 0x189c54 bytes
mshtml.dll!CHtmRootParseCtx::FlushNotifications() + 0x134 bytes
mshtml.dll!CHtmRootParseCtx::Commit() + 0xb bytes
mshtml.dll!CHtmParse::Commit() + 0x3c bytes
mshtml.dll!CHtmPost::Broadcast() + 0xf bytes
mshtml.dll!CHtmPost::Exec() + 0x11c bytes
mshtml.dll!CHtmPost::Run() + 0x40 bytes
mshtml.dll!PostManExecute() + 0x8e bytes
mshtml.dll!PostManResume() + 0x96 bytes
mshtml.dll!CHtmPost::OnDwnChanCallback() + 0x10 bytes
mshtml.dll!CDwnChan::OnMethodCall() + 0x1f bytes
mshtml.dll!GlobalWndOnMethodCall() + 0xf8 bytes
mshtml.dll!GlobalWndProc() + 0x4517a bytes
Вскоре после использования «System.Windows.Forms.Clipboard.Clear();» explorer.exe случайно сбой, и для меня это mmc.exe. –