有谁用过2005的BackgroundWorker这个控件!
应为有时候数据量过大等原应,程序很容易僵硬!
这个控件是2005出的后台处理的东东,可不是太会用,
我想做的是群发邮件,用这个来处理发邮件的过程,成功则往一个LISTVIEW里加成功的邮件地址,
失败则往别的LISTVIEW里加.
有高手能指点下吗?

解决方案 »

  1.   

    使用BackgroundWorker进行Thread编程 
    有没有高手明白啊!
    急着用啊!
    有没有有例子的!
    万分感谢啊!
      

  2.   

    1、调用BackgroundWorker的RunWorkerAsync方法(可以传递参数),它将调用DoWork事件
    2、在DoWork的事件响应代码中调用耗时的操作,此例中是PingIPs函数
    3、在耗时操作中判断CancellationPending属性,如果为false则退出
    4、如果要向用户界面发送信息,则调用BackgroundWorker的ReportProgress方法,它将调用ProgressChanged事件(可以将改变通过object类型传递)
    5、在ProgressChanged事件的响应代码中将改变呈现给用户
    6、如果需要取消耗时操作,则调用BackgroundWorker的CancelAsync方法,需要和步骤3一起使用参考:http://msdn2.microsoft.com/zh-cn/library/system.componentmodel.backgroundworker(VS.80).aspx
      

  3.   

    手动建立或者直接拖拽一个backgroundworker控件上去,建立dowork事件,在其中书写你想要执行的函数(就是你想要在线程中完成的步骤)。最后利用RunWorkerAsync调用dowork事件。RunWorkerAsync可以携带参数进入,在dowork中利用e.Argument(object)获得,当然需要进行数据类型转换。这样可以方便传入在线程中不能直接访问值。同时由于dowork就是建立了一个线c程,所以其中访问的变量或者方法需要满足线程的要求,不能直接访问的建立委托进行访问。