2017-02-19 41 views
0

問題如下:進程在Windows上啓動奇怪的行爲

我正在使用7-zip來壓縮日誌文件。 作爲一個壓力測試,我已經使最大日誌文件成爲可能4k〜,並且我已經完成了一項任務,用消息轟擊記錄器。由於壓縮函數每秒運行幾次,像刷新一樣發生奇怪的行爲。 如果我點擊/右鍵點擊某個窗口的某個菜單,它使我無法集中注意力,並在視覺工作室嘗試搜索某些內容,它會選擇我的搜索文本中鍵入,最終覆蓋自己和更多...

在現實中將不會正常發生,但如果可能的話,仍然想從這個事件中捍衛應用程序。

我的壓縮功能的嘗試目前是這樣的:

我一直試圖改變一些processInfo性質,但有至今還沒有取得多大成功。

在此先感謝您對此事的任何幫助/見解 Roy。

+0

,如果你認爲它是7zip的論點則首先在命令行中嘗試它,而不是指望我們做到這一點。 – Rob

+0

我檢查過了,參數不是問題的來源,因爲它如下所示:a - 預製件歸檔-tgzip - 指定ZIP歸檔文件-mx = 9是超壓縮。所以它不是問題。 – Roy

回答

1

很好,經過測試各種選項和在線閱讀我達到了答案。 因爲可執行文件7zG.exe是7-zip的圖形exe文件,即使我設置了processInfo.WindowStyle = ProcessWindowStyle.Hidden; 該過程打開窗口,並迅速將其隱藏,從而導致奇怪的行爲。 一旦我將FileName更改爲7z.exe,它就停止發生。

功能的最終版本:

private void CompressFile(string sourceName, string extension) 
    { 
     string targetName = sourceName.Replace(extension, ".zip"); 

     ProcessStartInfo processInfo = new ProcessStartInfo(); 
     processInfo.FileName = @"C:\Program Files\7-Zip\7z.exe"; 
     processInfo.Arguments = "a -tgzip \"" + targetName + "\" \"" + sourceName + "\" -mx=9"; 

     processInfo.WindowStyle = ProcessWindowStyle.Hidden; 

     Process presses = Process.Start(processInfo); 
     presses.WaitForExit(); 
    }