簡體   English   中英

安裝應用程序后,后台工作DoWork進程未運行

[英]Backgroundwork DoWork process not running after installing application

我有一個使用installshield安裝的應用程序。 該應用程序在調試過程中以及使用VS發布時運行良好,但是當我運行已安裝的版本時,DoWork進程不會受到攻擊,我似乎可以確定原因。

我已經在下面添加了代碼,如您所見,我已經添加了將代碼寫入文本文件進行調試的代碼。

條目“ Line:278”直接記錄在“ Line:281”之前。 問題在於DoWork應該在這些代碼之間運行,並記錄這些代碼行的條目。 在調試過程中,一切正常。

從這些日志中可以明顯看出,運行已安裝的版本時,從未打過DoWork(包含主要代碼)。

   private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
        {
            File.AppendAllText("C:\\Users\\Jamie\\Desktop\\errorloghardware.txt", "Line:278" + Environment.NewLine);
            backgroundWorker1.RunWorkerAsync(txtTerminal.Text);
            File.AppendAllText("C:\\Users\\Jamie\\Desktop\\errorloghardware.txt", "Line:281" + Environment.NewLine);
        }

        private void button2_Click(object sender, EventArgs e)
        {
            this.backgroundWorker1.CancelAsync();
        }

        private void MainForm_Load(object sender, EventArgs e)
        {
            backgroundWorker1.RunWorkerAsync(txtTerminal.Text);
            File.AppendAllText("C:\\Users\\Jamie\\Desktop\\errorloghardware.txt","Line:292" + Environment.NewLine);
        }

DoWork流程在其第一行中包含一個記錄行號的條目,因此我認為在此處發布冗長的方法沒有什么意義。

您的后台工作人員DoWork中可能會有例外。 檢查RunWorkerCompleted事件處理程序中的e.Error屬性。

您真的有硬編碼的目錄引用嗎? 您應該改為執行以下操作:

Environment.GetFolderPath(Environment.SpecialFolder.Desktop))

使用InstallShield創建安裝程序並不重要。 重要的是,您需要了解應用程序的確切依賴關系,並在部署邏輯中進行處理。 如果您對DLL有依賴性,請確保部署它。

在這種情況下,假設存在某個文件夾並且登錄的用戶可以訪問該文件夾是不合適的。

我想這將是找到錯誤的方法。否則工作尚未完成

  private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
    {
    if (e.Error == null)
        { 
           richBox1.Text=ex.Message;

      }else{
          try{
        File.AppendAllText("C:\\Users\\Jamie\\Desktop\\errorloghardware.txt", "Line:278" + Environment.NewLine);
        reset_all_variables()
        backgroundWorker1.RunWorkerAsync(txtTerminal.Text);
        File.AppendAllText("C:\\Users\\Jamie\\Desktop\\errorloghardware.txt", "Line:281" + Environment.NewLine);        

          }catch (Exception ex)
         {
           richBox1.Text=ex.Message;
         }
}

使用互斥鎖同步對文件的訪問。 當您嘗試從后台任務寫入文件時,文件可能正從主要任務繁忙。 或者只是定義全局Stream對象並使其保持打開狀態。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM