Winform跨线程打印日志到TextBox(使用委托跨线程访问控件)
来源:互联网 发布:蓝桥杯全国软件大赛 编辑:程序博客网 时间:2024/06/03 21:53
class Test { public delegate void ThreadStartDelegate(System.Windows.Forms.RichTextBox ric, string msg); public static void ShowMsg(System.Windows.Forms.RichTextBox ric, string msg) { if (!string.IsNullOrEmpty(msg)) { if (ric.InvokeRequired)//获取一个值,该值指示调用方在对控件进行方法调用时是否必须调用 Invoke 方法,因为调用方位于创建控件所在的线程以外的线程中。 { ThreadStartDelegate d = new ThreadStartDelegate(ShowMsg); ric.BeginInvoke(d, ric, msg);//在创建控件的基础句柄所在线程上,用指定的参数异步执行指定委托。 } else { ric.AppendText(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + " " + msg+Environment.NewLine); ric.ScrollToCaret(); } } } public static void ShowInfo(System.Windows.Forms.RichTextBox ric, string msg) { if (!string.IsNullOrEmpty(msg)) { if (ric.InvokeRequired) { ThreadStartDelegate d = new ThreadStartDelegate(ShowInfo); ric.BeginInvoke(d, ric, msg); } else { ric.AppendText(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + " 报告单编号为【" + msg +"】的记录上传成功!"+ Environment.NewLine); ric.ScrollToCaret(); } } } public static void ShowInfo(System.Windows.Forms.RichTextBox ric, string msg,string ex) { if (!string.IsNullOrEmpty(msg)) { if (ric.InvokeRequired) { ThreadStartDelegate d = new ThreadStartDelegate(ShowInfo); ric.BeginInvoke(d, ric, msg); } else { ric.AppendText(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + " 报告单编号为【" + msg + "】的记录上传失败!"+ex + Environment.NewLine); ric.ScrollToCaret(); } } } public static bool SysTest(System.Windows.Forms.RichTextBox ric) { SqlConnection localconn = ConnManager.GetLoaclConn(); OleDbConnection remoteconn = ConnManager.GetRemoteConn(); if (ConnManager.OpenSqlConn(localconn)) { ConnManager.CloseSqlConn(localconn); ShowMsg(ric, "本地数据库连接成功!"); if (ConnManager.OpenOleDbConn(remoteconn)) { ConnManager.CloseOleDbConn(remoteconn); ShowMsg(ric, "远程数据库连接成功!"); return true; } else { ConnManager.CloseOleDbConn(remoteconn); ShowMsg(ric, DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + " 远程数据库连接失败!"); return false; } } else { ShowMsg(ric, "本地数据库连接成功!"); return false; } } }
0 0
- Winform跨线程打印日志到TextBox(使用委托跨线程访问控件)
- Winform中使用委托实现跨线程安全调用控件
- C#跨线程访问WinForm控件
- C# WinForm 跨线程访问控件
- 使用MethodInvoker委托进行跨线程访问
- Winform程序打印日志到TextBox
- 使用委托及控件的invoke方法处理窗体控件的跨线程访问
- Winform 使用委托线程修改控件属性.显示时间示例
- C#中跨线程访问控件:委托,Invoke,BeginInvo
- C#中跨线程访问控件: 委托, Invoke, BeginInvoke
- 异步委托跨线程访问控件解决界面卡死
- 匿名代理解决winform跨线程访问控件
- WinForm(C#)中跨线程访问控件的解决方法
- 实现Winform 跨线程安全访问UI控件
- WinForm(C#)中跨线程访问控件的解决方法
- WinForm(C#)中跨线程访问控件的解决方法
- Winform 跨线程访问控件的两个方法总结
- Winform 线程间访问控件
- 程序员之路的重新思索
- 函数ZwQuerySystemInformation小结
- Android proguard代码混淆
- 数组常见算法
- HackerRank
- Winform跨线程打印日志到TextBox(使用委托跨线程访问控件)
- linux vi 删除多行的方法
- (转)三分问题 + UVALive 6954 Euclidean TSP
- 物理学步入禅境,缘起性空
- Spring IoC有什么好处呢?
- sun.misc.BASE64Encoder找不到jar包的解决方法
- Android assets文件夹之位置放置和作用( AS 和eclipse中的 )
- codeforces 757D状压dp
- JavaScript中原型对象的彻底理解