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

C# 多线程问题


 List<myService> li = new List<myService>() { 
                new myService(){cid=1,urls="http://www.jd.com",isvisible=true,times=5},
                new myService(){cid=2,urls="http://www.ac.com",isvisible=true,times=4},
                new myService(){cid=3,urls="http://www.bc.com",isvisible=true,times=3},
                new myService(){cid=4,urls="http://www.adbc.com",isvisible=false,times=2},
                new myService(){cid=5,urls="http://www.fbc.com",isvisible=true,times=4}
            };


我现在要定时访问上面集合中 isvisible=true  ,访问的时间是各自的times属性,不知道用多线程如何处理,请哪位指点一下,谢谢 --------------------编程问答-------------------- myService类中创建线程,线程里面延时你的times时间,或者用System.Threading.Timer --------------------编程问答-------------------- 给每个myService扩展一下,加个定时器,再加个OnTimer()就可以了 --------------------编程问答--------------------
引用 1 楼 bdmh 的回复:
myService类中创建线程,线程里面延时你的times时间,或者用System.Threading.Timer


myService 创建线程?我现在myService 中只有属性,是EF 自动生成的 --------------------编程问答--------------------
引用 3 楼 lizhengqin 的回复:
Quote: 引用 1 楼 bdmh 的回复:

myService类中创建线程,线程里面延时你的times时间,或者用System.Threading.Timer


myService 创建线程?我现在myService 中只有属性,是EF 自动生成的

生成了你不会改啊。不能改你不能写个子类扩展啊 --------------------编程问答--------------------
引用 2 楼 rtdb 的回复:
给每个myService扩展一下,加个定时器,再加个OnTimer()就可以了


我已经扩展了,加个 public System.Timers.Timer atime { get; set; } ,但是不明白你的 OnTimer()方法,这里面写什么? --------------------编程问答-------------------- 没明白你这题的意思;大概的思路为下
单独创建一个线程来访问这个对象, 对象访问要记得加lock。。。。 --------------------编程问答-------------------- 你这描述太模糊了 都没明白 --------------------编程问答--------------------
引用 5 楼 lizhengqin 的回复:
Quote: 引用 2 楼 rtdb 的回复:

给每个myService扩展一下,加个定时器,再加个OnTimer()就可以了


我已经扩展了,加个 public System.Timers.Timer atime { get; set; } ,但是不明白你的 OnTimer()方法,这里面写什么?

Timer到时间就调用OnTimer(),
OnTimer()里就是你要做的工作了,检查isvisible=true, 访问指定的站点?
--------------------编程问答-------------------- 求指导

我现在写到文件中字符都是一样,我真正要写的是把每条记录的网址写到文本文件中,这是我的代码,该如何修改,谢谢


 private void OnTimer(object sender, ElapsedEventArgs e)
        {
            lock (this)
            {
                string strMessage = "id=" + m.cid + " ,url=" + m.urls;
                myString.LogTxt("d:\\a.txt", strMessage + DateTime.Now.ToString());//把实体的信息写入到文本文件中
            }               
        }
       
        private void GetList()
        {         
            tUrlService dal=new tUrlService();

            var list = dal.GetList(true);

            for (int i = 0; i < list.Count(); i++)
            {
                var item = list[i] as TimeService;
                if (item.isvisible)
                {
                    m = item;//定义的全局实体
                    item.atime = new System.Timers.Timer();

                    item.atime.Elapsed += new ElapsedEventHandler(OnTimer);

                    item.atime.Interval = item.times * 1000;//程序运行的间隔时间
                    item.atime.Enabled = true;
                }
            }
        }
--------------------编程问答--------------------
引用 8 楼 rtdb 的回复:
Quote: 引用 5 楼 lizhengqin 的回复:

Quote: 引用 2 楼 rtdb 的回复:

给每个myService扩展一下,加个定时器,再加个OnTimer()就可以了


我已经扩展了,加个 public System.Timers.Timer atime { get; set; } ,但是不明白你的 OnTimer()方法,这里面写什么?

Timer到时间就调用OnTimer(),
OnTimer()里就是你要做的工作了,检查isvisible=true, 访问指定的站点?


我如何把参数传到OnTimer方法里 --------------------编程问答--------------------
引用 10 楼 lizhengqin 的回复:
Quote: 引用 8 楼 rtdb 的回复:

Quote: 引用 5 楼 lizhengqin 的回复:

Quote: 引用 2 楼 rtdb 的回复:

给每个myService扩展一下,加个定时器,再加个OnTimer()就可以了


我已经扩展了,加个 public System.Timers.Timer atime { get; set; } ,但是不明白你的 OnTimer()方法,这里面写什么?

Timer到时间就调用OnTimer(),
OnTimer()里就是你要做的工作了,检查isvisible=true, 访问指定的站点?


我如何把参数传到OnTimer方法里

不用传的,你的OnTimer就在myService里,所有的数据myService不都有了么
补充:.NET技术 ,  C#
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,