2009-08-28 3 views
0

내 상자와 동료 개발자 상자에서 잘 작동하는 C#으로 Word 2007 추가 기능 프로젝트를 만들었습니다. 그러나 빈 상자에 소프트웨어를 배포하려고하면 백그라운드 스레드를 시작할 때 Word가 열심히 충돌합니다. 예외는 발생하지 않습니다.Word 2007 리본 추가 기능에서 스레드 시작 문제

다음은 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가 만들어지고 "caught something"을 제외한 모든 줄이 출력되지만 waitForSignal.txt는 만들어지지 않으며 Microsoft의 "오류가 발생했습니다. 오류 메시지를 보내시겠습니까?"상자가 나타납니다.

Word에 새로운 스레드를 시작할 수있는 능력이 없다는 보안 문제가 있다고 생각하지만 어떻게 변경해야하는지 알 수 없습니다.

실제로 그게 문제인지 어떻게 해결할 수 있는지 아는 사람이 있습니까? 또는 문제를 일으킬만한 다른 것을 본다면?

답변

1

내 리본 코드에 .NET 2.0 서비스 팩 2가 필요하며 사용자 컴퓨터에는 .NET 2.0 서비스 팩 1 만 설치되어있었습니다. 동일한 버전의 서비스 팩을 변경하면 호환되지 않는 코드가 작성된다는 Microsoft의 생각을 말합니다.

관련 문제