gpt4 book ai didi

c# - 在进行 visual studio 自动化时,是否有更好的方法来处理 RPC_E_CALL_REJECTED 异常?

转载 作者:太空狗 更新时间:2023-10-29 23:18:24 24 4
gpt4 key购买 nike

这是我目前正在做的:

    protected void setupProject()
{
bool lbDone = false;
int liCount = 0;
while (!lbDone && liCount < pMaxRetries)
{
try
{
pProject.ProjectItems.Item("Class1.cs").Delete();
lbDone = true;
}
catch (System.Runtime.InteropServices.COMException loE)
{
liCount++;
if ((uint)loE.ErrorCode == 0x80010001)
{
// RPC_E_CALL_REJECTED - sleep half sec then try again
System.Threading.Thread.Sleep(pDelayBetweenRetry);
}
}
}
}

现在我在对 EnvDTE 的大多数调用周围都设置了 try catch block ,而且它运行良好。我遇到的问题是当我循环遍历一个集合并对每个项目执行一次操作时。

foreach(ProjectItem pi in pProject.ProjectItems)
{
// do something to pi
}

有时我在 foreach(ProjectItem pi in pProject.ProjectItems) 行中遇到异常。因为我不想在收到 RPC_E_CALL_REJECTED 异常时重新开始 foreach 循环,所以我不确定我能做什么。

编辑以回答评论:是的,我正在从另一个程序自动化 VS,是的,我通常同时将 VS 用于其他事情。我们有一个读取 xml 文件然后基于 xml 文件生成大约 50 个 VS 解决方案的应用程序。这通常需要几个小时,所以我会尝试在这期间做其他工作。

最佳答案

这个 MSDN 页面上有一个解决方案:How to: Fix 'Application is Busy' and 'Call was Rejected By Callee' Errors .它展示了如何实现 COM IOleMessageFilter 接口(interface),以便它自动重试调用。

关于c# - 在进行 visual studio 自动化时,是否有更好的方法来处理 RPC_E_CALL_REJECTED 异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5330289/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com