我收到一个“忙碌”消息框,其中显示以下内容:“此操作无法完成,因为“CATIA - 产品 - [testfile.CATPart]”程序没有响应。” 从“切换到...”“重试”或“取消”中选择。
问题:我需要找到一种编程方式来确保消息框永远不会出现。
背景:我正在使用 C#.net 开发一个 AutoDesk 插件,该插件临时访问非 Autodesk 3D 应用程序。它正在远程访问非 Autodesk 3D 应用程序(使用 marshal)并进行长文件导出。文件导出时,时间过长,并出现消息。如果我等待,我可以在 Windows 资源管理器中看到文件完成后单击重试,并且一切正常。但是,我不能指望客户一直喜欢单击“重试”。我需要它来忘记消息并继续等待,如果可能的话无限期地等待。一些文件导出可能需要一个多小时,而这些文件甚至还没有那么大。
我已经尝试了几件事,但是由于我无法访问 exe(这是一个 dll),因此我似乎对修改 netmsmqbinding 设置的访问权限有所限制。我尝试了几种不同类型的队列和服务,但它们都可以正常启动和停止,但从不执行文件导出过程。理想情况下,我只想从我的 dll 中关闭任何潜在的消息框,但如果这不可能,我可以将 netmsmqbinding 设置重置为很长的时间吗?这对我不起作用:
namespace Testing_V0
{
[PluginAttribute("Testing_V0R1", "ADSK", ToolTip = "Testing the plugin", DisplayName = "Testing the plugin")]
[AddInPluginAttribute(AddInLocation.AddIn)]
public class MyPlugin : AddInPlugin
{
public override int Execute(params string[] parameters)
{
System.TimeSpan TS = new System.TimeSpan(0, 30, 10);
System.TimeSpan TB = new System.TimeSpan(10, 0, 0);
NetMsmqBinding NMB = new NetMsmqBinding();
NMB.MaxRetryCycles = 1000;
NMB.ReceiveRetryCount = 1000;
NMB.RetryCycleDelay = TS;
NMB.OpenTimeout = TB;
//NMB.ReceiveErrorHandling = ReceiveErrorHandling.Drop;
//Do the Export process here
}
}
}