C# 创建多个具有动态实例名称的计时器
我正在编写一个需要创建多个计时器(系统)的服务。要创建的计时器的数量在运行时之前是未知的,它基于外部(XML)配置文件的内容。 每个计时器将被分配不同的任务和不同的时间间隔 如何动态创建x个计时器?我想在类实例名称中使用for循环中的计数,但我似乎不知道如何做到这一点 当前代码如下所示,它创建了一个带有for循环最后结果的计时器。我想为每个循环创建一个计时器 我正在学习C#,所以举例会很有帮助C# 创建多个具有动态实例名称的计时器,c#,timer,C#,Timer,我正在编写一个需要创建多个计时器(系统)的服务。要创建的计时器的数量在运行时之前是未知的,它基于外部(XML)配置文件的内容。 每个计时器将被分配不同的任务和不同的时间间隔 如何动态创建x个计时器?我想在类实例名称中使用for循环中的计数,但我似乎不知道如何做到这一点 当前代码如下所示,它创建了一个带有for循环最后结果的计时器。我想为每个循环创建一个计时器 我正在学习C#,所以举例会很有帮助 var items = GetDownloadList(); int CountDownloadLis
var items = GetDownloadList();
int CountDownloadListItems = DownloadItemsCount();
for (int i = 0; i < CountDownloadListItems; i++)
{
if (ClassLib.UrlExists.Check(items[i, 2], items[i, 0]))
{
//new instance of timers
Timers downloadTimer = new Timers();
downloadTimer.CreateTimer(items[i, 2], items[i, 3], items[i, 4], items[i, 0], items[i, 5], items[i, 6]);
}
}
// My Timers Class
public class Timers
{
//timer
private Timer _timer = new Timer();
private volatile bool _requestStop = false;
public Timers()
{
_timer.Interval = 20;
_timer.Elapsed += Timed;
_timer.AutoReset = false;
}
private string _Url;
private string _Save;
private string _File;
private string _Id;
private string _FreqValue;
private string _FreqUnit;
public string Url
{
get { return _Url; }
set { _Url = value; }
}
public string Save
{
get { return _Save; }
set { _Save = value; }
}
public string File
{
get { return _File; }
set { _File = value; }
}
public string Id
{
get { return _Id; }
set { _Id = value; }
}
public string FreqValue
{
get { return _FreqValue; }
set { _FreqValue = value; }
}
public string FreqUnit
{
get { return _FreqUnit; }
set { _FreqUnit = value; }
}
public void CreateTimer(string url, string save,string file,string id,string freqValue,string freqUnit)
{
this.Url = url;
this.Save = save;
this.File = file;
this.Id = id;
this.FreqValue = FreqValue;
this.FreqUnit = FreqUnit;
_timer.Interval = 2000;
_timer.Start();
}
private void Timed(object source, ElapsedEventArgs e)
{
_timer.Stop();
//StreamWriter sr = new StreamWriter("E:\\downloader\\"+Id+".txt");
//sr.Write(Url+" "+Save+" "+File+"\n\n");
//sr.Close();
ClassLib.Update.File(Url,Save,File,Id);
_timer.Start();
}
}
var items=GetDownloadList();
int CountDownloadListItems=DownloadItemsCount();
对于(int i=0;i
对于for循环中的每个值,您似乎都在创建一个新的计时器。但是,您似乎没有保留对它们的引用
添加一个Dictionary
变量,将引用存储在“name”之上,怎么样
var timersDict = new Dictionary<string, Timers>();
var items = GetDownloadList();
int CountDownloadListItems = DownloadItemsCount();
for (int i = 0; i < CountDownloadListItems; i++)
{
if (ClassLib.UrlExists.Check(items[i, 2], items[i, 0]))
{
//new instance of timers
Timers downloadTimer = new Timers();
downloadTimer.CreateTimer(items[i, 2], items[i, 3], items[i, 4], items[i, 0], items[i, 5], items[i, 6]);
timersDict.Add("Timer" + i, downloadTimer);
}
}
var timersDict=newdictionary();
var items=GetDownloadList();
int CountDownloadListItems=DownloadItemsCount();
对于(int i=0;i
在我的downloadTimer类中定义的计时器类在哪里。我想我真正想问的是如何创建“downloadTimer”的多个unqiue实例,谢谢。我已经意识到我的代码正在工作,但是我在其他地方有伪代码干扰/迷惑我。现在正在工作。我还没想过要提到他们。非常感谢。