当前位置:编程学习 > C#/ASP.NET >>

帮忙看下这段代码。那里出错了 委托的不起作用

下面委托帮忙看下那里出了错,发现运行完成后。委托调用的函数UpDateDgv1 没有执行。窗体上面的list控件也并未修改成功



using System;
using System.Text;
using System.Threading;
using LitJson;

namespace AutoFor
{
    class Config
    {
        public delegate void UpDateDgvDelegate(string msg1, int rowId1, string columnName1);
        public static UpDateDgvDelegate _upDateStateDelegate1;
        public static Random rd = new Random();
        public Config()
        {
            _upDateStateDelegate1 = new UpDateDgvDelegate(UpDateDgv1);
        }
        public void Run()
        {
            int count1 = 1;
            int number1 =1; 
            for (int i = 0; i < count1; i++) 
            {
                Thread pingTask1 = new Thread(new ThreadStart(delegate { get_info(i, number1); }));
                pingTask1.Start();
            }
        
        }

        public void get_info(int dgvrowid, int number)
        {
            DateTime st = DateTime.Now;
            HttpHelps hh = new HttpHelps();
            for (int i = 0; i < number; i++)
            {
                try
                {
                    int ii = i + 1;
                    string POST_data = "520";
                    string URL = "http://cgi.meigui.qq.com/cgi-bin/rosary0904_gain?gprand=" + rd.NextDouble();
                    string HTML = hh.GetHttpRequestStringByNUll_Post(URL, POST_data, Encoding.Default);
                    DateTime et = DateTime.Now;
                    TextFor p = new TextFor();

//问题出现在这里。程序执行完成发行没有调用这里委托的数据去更新窗体空间的值
                  this.BeginInvoke(_upDateStateDelegate1, HTML.ToString(), dgvrowid, ExecDateDiff(st, et));
                }
                catch { }
            }
        }

        public void UpDateDgv1(string msg, int rowId, string columnName)
        {
            try
            {
            TextFor F = new TextFor(); 
            msg = "线程:" + rowId + "结果:" + msg;
            F.listBox1.Items.Add(msg);
            }
            catch { }
        }
        public static string ExecDateDiff(DateTime dateBegin, DateTime dateEnd)
        {
            TimeSpan ts1 = new TimeSpan(dateBegin.Ticks);
            TimeSpan ts2 = new TimeSpan(dateEnd.Ticks);
            TimeSpan ts3 = ts1.Subtract(ts2).Duration();
            return ts3.TotalMilliseconds.ToString();
        }

    }
}
--------------------编程问答-------------------- 哪儿有窗体?TextFor吗?
线程里new出的窗体?

this.BeginInvoke?
this是Config的实例,那么这个BeginInvoke定义又在哪? --------------------编程问答-------------------- TextFor 是主窗体 

BeginInvoke 确实没有定义,能指教下吗、。

BeginInvoke在类里面如何使用或者定义
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,