Я создал проект надстройки Word 2007 на C#, который отлично работает на моей машине и на машине другого разработчика. Однако, когда мы пытаемся развернуть программное обеспечение в пустом поле, Word жестко падает (без исключения), когда мы запускаем фоновый поток.
Вот соответствующий код в файле Ribbon.cs:
private void startThread()
{
StreamWriter fout = new FileInfo("C:\\startThread.txt").CreateText();
fout.WriteLine("startThread start");
fout.Flush();
try {
ThreadStart job = new ThreadStart(this.waitForSignal);
Thread thread = new Thread(job);
thread.Start();
fout.WriteLine("No Exceptions?");
}
catch
{
fout.WriteLine("caught something");
}
fout.WriteLine("startThread end");
fout.Flush();
fout.Close();
}
public void waitForSignal()
{
StreamWriter fout = new FileInfo("C:\\waitForSignal.txt").CreateText();
fout.WriteLine("entered waitForSignal");
fout.Flush();
fout.Close();
}
startThread()
вызывается из конструктора ленты. При запуске на моем компьютере оба файла создаются со всеми WriteLines, кроме «что-то поймал». При запуске в другом поле создается startThread.txt и выводятся все строки, кроме «что-то поймал», но waitForSignal.txt никогда не создается, и появляется окно Microsoft «возникла проблема, хотите отправить сообщение об ошибке».
Я думаю, что есть какая-то проблема с безопасностью, из-за которой Word не может запускать новые потоки, но я не могу понять, как это изменить.
Кто-нибудь знает, действительно ли это проблема и как ее исправить? Или если вы видите что-то еще, что может быть причиной проблемы?