我的應用程序是系統托盤應用程序,使用C#,.NET 4.0。許多線程,一種方法失敗
我試圖一次顯示許多PDF文件,每個PDF應該與其他窗口分割屏幕,我通過ProcessName確定,這就是全部。
難度在於我需要等到用戶關閉該窗口(.WaitForExit()方法),因爲稍後我將刪除PDF文件。這裏出現問題。
在第一個線程中一切正常,但問題是當我嘗試顯示第二個PDF文件窗口processList [0] THOUGH MoveWindow函數返回true,並且對該窗口的處理也是正確的只有pdf窗口正在調整大小,另一個窗口失敗。
在main方法我要創建的唯一線程(我稱之爲這段代碼幾次,每次用戶希望看到的PDF文件):
Thread pdfThread = new Thread(() => ShowPdfFile(fullPath));
pdfThread.Start();
然後(簡化代碼)
public static void ShowPdfFile(string fileName)
{
try
{
Process pdfProcess = Process.Start(fileName);
Thread.Sleep(500);
string windowTitle = GetActiveWindowTitle();
IntPtr pdfHandle = (IntPtr)FindWindow(null, windowTitle);
MoveWindow(pdfHandle, 0, 0, 0, 0, true);
Process[] processList = Process.GetProcessesByName("someProcess");
MoveWindow(processList[0].MainWindowHandle, 0, 0, 0, 0, true);
pdfProcess.WaitForExit();
MoveWindow(processList[0].MainWindowHandle, 0, 0, max, max, true);
}
catch (Exception ex)
{
LogToFile(ex);
}
finally
{
try
{
File.Delete(fileName);
}
catch
{
LogToFile("Cannot delete file");
}
}
更新:嗯,我整天都在調試它,但現在我注意到在第二個線程它不等待在線pdfProcess.WaitForExit(); 我應該改變什麼來強制線程等待確切的pdfProcess退出?
你能詳細說明這個問題嗎? –
我認爲這基本上都是。你還想知道什麼? – DinosaurTom
我無法動搖你的問題究竟是什麼? –