我们都知道,某些场合下,在对数据库进行访问时,为了避免同步访问数据时所带来的延迟,我们需要改进设计,以提高程序执行效率。一方面,这可以给用户以良好的使用体验;另一方面,也降低了程序崩溃的可能性。为实现这一目的,我们采用异步方式来访问数据库。先看下面的代码

 

同步和异步访问数据库private void button2_Click(object sender, EventArgs e) 

     这个例子非常简单,这是同步的例子,:首先建立一个连接,打开连接后,创建一个SqlCommand,并设置命令,最后将执行后的值给到label控件.可以看到,整个例子都是在一个线程内进行的,并没有涉及到其他的线程,再看一下下面的例子.

 

同步和异步访问数据库private void button2_Click(object sender, EventArgs e) 

可以看到,上面的代码就是异步读取数据库,实际上就是开启了另外的一个线程,下面为处理代码

 

同步和异步访问数据库public void ProcessResult(IAsyncResult ar) 

下面是委托的代码

      

同步和异步访问数据库 //声明一个委托代理 
同步和异步访问数据库
       public delegate void LabelHandler(string text); 
同步和异步访问数据库
同步和异步访问数据库       
public void UpdateLabel(string text) 

  

     值得注意的是,在多线程编程中,我们经常要在工作线程中去更新界面显示,而在多线程中直接调用界面控件的方法是错误的做法,正确的做法是将工作线程中涉及更新界面的代码封装为一个方法,通过 Invoke 或者 BeginInvoke 去调用,两者的区别就是一个导致工作线程等待,而另外一个则不会。

相关文章:

  • 2021-09-05
  • 2021-10-20
  • 2021-11-04
  • 2022-12-23
  • 2021-10-14
  • 2021-12-25
  • 2021-10-15
  • 2021-11-20
猜你喜欢
  • 2021-12-19
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-11-16
相关资源
相似解决方案