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 创建线程?我现在myService 中只有属性,是EF 自动生成的
myService 创建线程?我现在myService 中只有属性,是EF 自动生成的
生成了你不会改啊。不能改你不能写个子类扩展啊
我已经扩展了,加个 public System.Timers.Timer atime { get; set; } ,但是不明白你的 OnTimer()方法,这里面写什么?
单独创建一个线程来访问这个对象, 对象访问要记得加lock。
我已经扩展了,加个 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;
}
}
}
我已经扩展了,加个 public System.Timers.Timer atime { get; set; } ,但是不明白你的 OnTimer()方法,这里面写什么?
Timer到时间就调用OnTimer(),
OnTimer()里就是你要做的工作了,检查isvisible=true, 访问指定的站点?
我如何把参数传到OnTimer方法里
我已经扩展了,加个 public System.Timers.Timer atime { get; set; } ,但是不明白你的 OnTimer()方法,这里面写什么?
Timer到时间就调用OnTimer(),
OnTimer()里就是你要做的工作了,检查isvisible=true, 访问指定的站点?
我如何把参数传到OnTimer方法里
不用传的,你的OnTimer就在myService里,所有的数据myService不都有了么