好的,这可以如下工作
public MainWindow()
{
CheckCrawlURLs.func_StartCrawlingWaitingUrls();
}
然而,这不适用于
public MainWindow()
{
Task.Factory.StartNew(() =>
{
CheckCrawlURLs.func_StartCrawlingWaitingUrls();
});
}
以下是两个例子中执行的类
public static class CheckCrawlURLs
{
public static void func_StartCrawlingWaitingUrls()
{
PublicStaticFunctions.AddMsgToEvents("Checking waiting crawling urls process started");
System.Windows.Threading.DispatcherTimer dispatcherTimer = new System.Windows.Threading.DispatcherTimer();
dispatcherTimer.Tick += new EventHandler(func_CheckWaitingUrls);
dispatcherTimer.Interval = new TimeSpan(0, 0, 5);
dispatcherTimer.Start();
}
private static void func_CheckWaitingUrls(object sender, EventArgs e)
{
PublicStaticFunctions.AddMsgToMoreCommonEvents("Checking waiting to crawl urls...");
List<string> lstStartCrawling = CrawlURLDB.func_ReturnNextCrawlLinks();
PublicStaticFunctions.AddMsgToMoreCommonEvents("Number of links to start crawlin: " + lstStartCrawling.Count);
}
}
所以我的问题是这里的逻辑是什么?
在第二个任务工厂启动时,func_CheckWaitingUrls没有打勾。
我应该使用哪一个?
答案 0 :(得分:3)
顾名思义,DispatcherTimer
基于WPF调度程序。这显然只适用于GUI线程。
改为查看System.Threading.Timer
- 或者在新线程上启动计时器回调。