如果没有报错的话看看是不是内存不够或者系统的类库不足例如你调用COM组件引用了其他的DLL等等都是可能存在的问题。
对这个需求完全可以在单击“关闭”按钮的时候d出一个对话框,来让用户确定是否真的要退出。这是一个很好的解决方法,并且实现也是很容易的。但是人家不想这样,想要拥有类似QQ在托盘区后台运行的那种效果,没办法,只能想办法来实现了。>并不是,后台也只是看了个线程去做事情,而不是在主线程做事情。这样的作用就是如果某个工作需要较多的时间才能完成,这样就会占用主线程,造成程序响应慢等问题。这时,就需要用后台线程来 *** 作,这样就不会影响主线程了。
你可以百度搜下线程的作用,我这里就不复制粘贴了。
建立SqlHelper类
//定义连接串
public static readonly string LocalSqlServer = @"server=localhost\sql2005;database='库';uid=sa;pwd=sa;";
// 执行SQL语句,返回影响的记录数
public static int ExecuteSql(string connectionString, string SQLString)
{
using (SqlConnection connection = new SqlConnection(connectionString))
{
using (SqlCommand cmd = new SqlCommand(SQLString, connection))
{
try
{
connectionOpen();
int rows = cmdExecuteNonQuery();
return rows;
}
catch (SystemDataSqlClientSqlException E)
{
connectionClose();
throw new Exception(EMessage);
}
}
}
}
//查询
public static DataSet Query(string connectionString, string SQLString)
{
if (SQLString != null && SQLStringTrim() != "")
{
using (SqlConnection connection = new SqlConnection(connectionString))
{
DataSet ds = new DataSet();
try
{
connectionOpen();
SqlDataAdapter command = new SqlDataAdapter(SQLString, connection);
commandFill(ds, "ds");
}
catch (SystemDataSqlClientSqlException ex)
{
throw new Exception(exMessage);
}
return ds;
}
}
else
{
return null;
}
}
net 2005之后线程不允许直接 *** 作UI,否则会报错,但是可以用委托的方式来解决。
比如下面的datareflash是线程里的一个方法,它需要刷新页面控件的数据,那么就可以定义一个委托来实现,参考大妈如下:
public void DataReflash(string text)
{
if (text == "901")
{
MyInvoke mi = new MyInvoke(BindDate);//把BindDate的方法放在委托里边就行了,类似于你的SetText方法,这个方法里边写什么代码都行,如给文本框赋值,或重新绑定datagrid的数据源等
thisBeginInvoke(mi);
}
}
完全可以做,只是需要一个问题:WINFORM如何 *** 作网站的数据库?
通常有2种方式:
1 直连
2 WebService方式
根据自己的实际情况和安全性等方面,进行选择即可。
以上就是关于C# winform 程序在后台运行 点击快捷键使程序做出相应反应。全部的内容,包括:C# winform 程序在后台运行 点击快捷键使程序做出相应反应。、如何将winform后台代码转成webform后台代码有这样的转换软件吗谢谢高手指点、c# winform 後台线程BackgroundWorker等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)