есть ли лучший способ обработки RPC_E_CALL_REJECTED исключения при автоматизации визуальной студии?

это то, что я сейчас делаю:

    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);
                }
            }
        }
    }

теперь у меня есть блок try catch вокруг большинства вызовов материала EnvDTE, и он работает достаточно хорошо. Поскольку я не хочу запускать цикл foreach заново, если я получаю исключение RPC_E_CALL_REJECTED, я не уверен, что я могу сделать.

Отредактируйте, чтобы ответить на комментарий: Да, я автоматизирую VS из другой программы, и да, я обычно использую VS для чего-то еще одновременно. У нас есть приложение, которое читает XML-файл, а затем генерирует около 50 решений VS на основе XML-файла. Обычно это занимает пару часов, поэтому я стараюсь заниматься другой работой, пока это происходит.

5
задан scott 16 March 2011 в 20:10
поделиться