首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >每次创建新任务或线程,并在完成时关闭

每次创建新任务或线程,并在完成时关闭
EN

Stack Overflow用户
提问于 2020-01-16 23:11:32
回答 1查看 46关注 0票数 1
代码语言:javascript
复制
protected override void OnStart(string[] args)
        {
            ....
            timer.Interval = 5000; //number in milisecinds  
            timer.Enabled = true;
        }

        private void OnElapsedTime(object source, ElapsedEventArgs e)
        {
            getData(); // Get data and store into DB
            WriteToFile("Service is recall at " + DateTime.Now);
        }

我尝试创建一个服务来检查和获取电子邮件中的数据。

我上面的代码是平均每5秒就会调用一次getData();。我的函数getData(),用于获取数据并存储到SQL Server中。但有时,我的getData();需要7-8秒才能完成,所以如果timer.Interval = 5 seconds失败了。

我的想法是每隔5秒为call getData()创建新的ThreadTask,并在完成时自动关闭。我该怎么做呢?

或者请给出一些更好的想法或关键词。

EN

回答 1

Stack Overflow用户

发布于 2020-01-16 23:31:13

您可以使用Task.Run()来完成任务上的工作:

代码语言:javascript
复制
    private void OnElapsedTime(object source, ElapsedEventArgs e)
    {
        Task.Run(() => getData());
    }

但是,可能存在一些线程安全问题,这取决于getData()如何处理它使用的数据。有关任务的更多信息,请访问Task Class at Microsoft Docs

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59772579

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档