日期:2014-05-17  浏览次数:20854 次

使用backgroundworker进行异步RunWorkerAsync时候,时间长了,总是出错。
刚开始一切正常,时间长了,就提示,backgroundworker正忙,这是为什么,求大神指引。。
刚开始学做winform,是不是哪里写的不对,
我的事件里就dowork写了,ProgressChanged,RunWorkerCompleted没有写代码。
dowork代码如下。

 private void bgw_DoWork(object sender, DoWorkEventArgs e)
        {
            if (bgw.CancellationPending)
            {
                return;
            }

            try
            {
                tray_Initform(tagasync.ToString());
            }
            catch (Exception ep)
            {

                Clogs log = new Clogs();
                string path = Environment.CurrentDirectory.Replace("\\bin\\Debug", "") + "\\log\\";
                log.LogError("错误追踪", ep, path);
                this.Close();
            }
        }



tray_Initform如下:

   private void tray_Initform(string info)
        {
            DataView dv = new DataView();
            string pathxml = Environment.CurrentDirectory.Replace("\\bin\\Debug", "") + "\\Data\\gw.xml";
            dv = xml.GetDataViewByXml(pathxml, "type=" + info, "type asc");
            DataSet ds = new DataSet();
            ds.Tables.Add(dv.ToTable());


            int dvnum = ds.Tables[0].Rows.Count;


            ///获取类型名字显示

            lblMsg.Text = ds.Tables[0].Rows[0]["typename"].ToString().Trim();


            //string imgpathok = Environment.CurrentDirectory.Replace("\\bin\\Debug", "") + "\\img\\blue.jpg";
            //string imgpathnotok = Environment.CurrentDirectory.Replace("\\bin\\Debug", "") + "\\img\\icon.ico";