C# AutoCAD尝试从.Net命令打开模式对话框时崩溃
我正在开发一个AutoCAD.Net插件,其中包含一个打开模式窗口的命令。窗口应显示一个网页 但它有一个奇怪的bug,下面是一个简单的代码来重现它:C# AutoCAD尝试从.Net命令打开模式对话框时崩溃,c#,.net,autocad,autocad-plugin,C#,.net,Autocad,Autocad Plugin,我正在开发一个AutoCAD.Net插件,其中包含一个打开模式窗口的命令。窗口应显示一个网页 但它有一个奇怪的bug,下面是一个简单的代码来重现它: [CommandMethod("TEST_BROWSER")] public void TestBrowserCommand() { var window = new Window(); var browser = new WebBrowser(); window.Content = browser; browse
[CommandMethod("TEST_BROWSER")]
public void TestBrowserCommand()
{
var window = new Window();
var browser = new WebBrowser();
window.Content = browser;
browser.Source = new Uri("http://google.com");
window.ShowDialog();
}
或者更简单:
[CommandMethod("TEST_BROWSER")]
public void TestBrowserCommand()
{
Application.ShowModalWindow(new Uri("http://google.com"));
}
以下是AutoCAD崩溃后的一系列步骤:
还有其他人遇到过同样的问题吗?您可以创建WPF浏览器应用程序,并在需要时使用给定的url启动。或者尝试使用AutoCAD传递shell命令 您可以在CMD中选择的浏览器中打开网站,如下所示
chrome.exe“zcodia.com.au”我现在无法测试,但我认为您需要将
CommandMethod
语句更改为:[CommandMethod(“test\u METHOD”,CommandFlags.Modal)]
CommandMethod属性可以有一些标志。
使用
会话
标志可使该方法独立于打开的文档,并由autocad应用程序主窗口管理。我不需要Shell命令,因为它们是作为单独的应用程序启动的,而我需要autocad中的模式窗口。非模式窗口工作正常,但模式窗口不行。如果问题只在第二次调用时出现,我建议您在完成后尝试清理有关浏览器窗口的所有内容。尝试在命令结束时正确地处理它。@Daniel我试图调用Window.Close事件上的WebBrowser.dispose方法,但没有帮助。可能一些未清理的数据确实是这样,但我不知道如何正确清理所有数据。另一件事是可以尝试向CommandMethod
属性添加标志。有许多标志,例如会话
(命令在autocad主窗口中独立于打开的文档工作)。可能还有一个模式
标志。我不知道每个标志都有什么作用,但其中一些可能有用。我想试试会话
标志。@Daniel很好,会话
标志有效,但模式
无效。把它作为答案贴出来,我会接受的。我也有同样的问题,这也帮我解决了。(我不得不在我的所有事务中添加使用语句的DocumentLock,但我很乐意接受它,让它工作!)我只是讨厌事务。我一直在使用Interop
。希望Autodesk不会决定将其淘汰。