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属性,不知道用多线程如何处理,请哪位指点一下,谢谢

解决方案 »

  1.   

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

  2.   

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

  3.   


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

  4.   


    myService 创建线程?我现在myService 中只有属性,是EF 自动生成的
    生成了你不会改啊。不能改你不能写个子类扩展啊
      

  5.   


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

  6.   

    没明白你这题的意思;大概的思路为下
    单独创建一个线程来访问这个对象, 对象访问要记得加lock。
      

  7.   


    我已经扩展了,加个 public System.Timers.Timer atime { get; set; } ,但是不明白你的 OnTimer()方法,这里面写什么?
    Timer到时间就调用OnTimer(),
    OnTimer()里就是你要做的工作了,检查isvisible=true, 访问指定的站点?
      

  8.   

    求指导我现在写到文件中字符都是一样,我真正要写的是把每条记录的网址写到文本文件中,这是我的代码,该如何修改,谢谢
     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;
                    }
                }
            }
      

  9.   


    我已经扩展了,加个 public System.Timers.Timer atime { get; set; } ,但是不明白你的 OnTimer()方法,这里面写什么?
    Timer到时间就调用OnTimer(),
    OnTimer()里就是你要做的工作了,检查isvisible=true, 访问指定的站点?
    我如何把参数传到OnTimer方法里
      

  10.   


    我已经扩展了,加个 public System.Timers.Timer atime { get; set; } ,但是不明白你的 OnTimer()方法,这里面写什么?
    Timer到时间就调用OnTimer(),
    OnTimer()里就是你要做的工作了,检查isvisible=true, 访问指定的站点?
    我如何把参数传到OnTimer方法里
    不用传的,你的OnTimer就在myService里,所有的数据myService不都有了么