Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# AutoCAD尝试从.Net命令打开模式对话框时崩溃_C#_.net_Autocad_Autocad Plugin - Fatal编程技术网

C# AutoCAD尝试从.Net命令打开模式对话框时崩溃

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

我正在开发一个AutoCAD.Net插件,其中包含一个打开模式窗口的命令。窗口应显示一个网页

但它有一个奇怪的bug,下面是一个简单的代码来重现它:

[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崩溃后的一系列步骤:

  • 从命令行(测试浏览器)调用该命令
  • 关上窗户
  • 再次调用相同的命令
  • 出现错误消息:
  • 如果打开非模态(非模态)窗口,或不使用web浏览器,或不使用命令调用代码,则效果良好

    但我需要一个模式窗口,其中包含从命令行调用的浏览器


    还有其他人遇到过同样的问题吗?

    您可以创建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不会决定将其淘汰。