1.在处理较慢的代码前面加DoEvents()
Application.DoEvents();//此方法只能优化界面,但是程序代码运行时间会增加,降低了性能,不建议使用.
2.使用多线程
Thread th = Thread.CurrentThread;
th.Name = "MainThread";
Console.WriteLine("This is {0}", th.Name);
Console.ReadKey();
3.使用委托异步,对于有参的,
//调用
Application.DoEvents();
lock (SequenceLock)
{
Run_delegate_zi run = new Run_delegate_zi(Run_zi);
IAsyncResult result = run.BeginInvoke(tbname, i, null, null);
//有返回值可去掉下面代码
//string result1 = run.EndInvoke(result);
}
//顶一个Lock
private static readonly object SequenceLock = new object();
//定义委托及方法名称
private delegate void Run_delegate_zi( string tbname, int i);
public void Run_zi(string tbname, int i)//无返回值
{
//...业务代码
}
//4.解决线程间操作无效
//在窗体Load方法里写
System.Windows.Forms.Control.CheckForIllegalCrossThreadCalls = false;
//5.如果是Datagridview 界面如果有判断或者前景色需要调整, 建议使用CellFormatting 事件,运行效率极快
https://learn.microsoft.com/zh-cn/dotnet/api/system.windows.forms.datagridview.cellformatting?view=windowsdesktop-7.0
微软官网.