2011-08-30 62 views
0

我有一個WinForm,它在服務器上使用.Net Remoting調用方法。 該方法正在查詢數據庫。迄今爲止很直截了當。問題是,如果我在執行此方法時關閉窗體,會引發異常抱怨說它期望SqlParameter重新打開窗體。我不希望表單重新打開。如果發生異常,Winform重新啓動

我不想簡單地壓制拋出的任何SqlException,因爲我想在拋出異常時收到通知。

有沒有簡單的解決方法呢?

StringBuilder sb = new StringBuilder(); 
sb.Append("SELECT COUNT(*) FROM ") 
    .Append(table) 
    .Append(" WHERE ") 
    .Append(fieldName) 
    .Append(" = @Value AND SoftDelete = 0"); 

SqlCommand cmd = this.m_SqlDBConnPool.GetSqlCommand(sb.ToString()); 
int count = -1; 

lock (cmd) 
{ 
    cmd.Parameters.Clear(); 
    cmd.Parameters.Add(new SqlParameter("Value", value)); 
    this.m_SqlDBConnPool.ExecQuery(cmd, new SqlDBConnPool.DataReader<object>(
     delegate(SqlDataReader reader, object o) 
     { 
      count = reader.GetInt32(0); 
      return true; 
     }), null); 
} 

請注意SqlDBConnPool是我們寫的一類。

+2

請出示一些代碼,調用存儲過程的參數,以及方式。 –

+0

我粘貼了代碼 – Jonny

+2

爲什麼在這個世界上你會認爲你需要鎖定一個局部變量? –

回答

0

嘗試將圍繞以下代碼...

try 
{ 
    //Your code 
} 
catch(Exception ex) 
{ 
    //Close the form by your self 
    //Send back the error 
} 
+0

問題在於我仍然必須拋出異常,因爲如果發生錯誤,我希望客戶端知道發生了錯誤。我不想要的是,如果在表單關閉時引發異常,表單不會重新打開。 – Jonny

+0

在表單代碼中添加try catch,以便它可以吞食或處理異常,而不是進入前臺。 – CodingBarfield

+0

我可能很愚蠢,但沒有那麼多。我在表單代碼中使用了一個try catch塊,它打開一個對話框,顯示用戶出現錯誤。這就是爲什麼我問這個問題得到一些想法。 – Jonny

相關問題