2011-08-30 25 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

相关问题