c# – 如何使用线程或定时器从WPF客户端应用程序定期执行方法[已
发布时间:2020-12-15 06:52:05 所属栏目:百科 来源:网络整理
导读:我正在开发一个 WPF客户端应用程序.该应用程序定期向webservice发送数据.当用户登录到应用程序时,我希望每5 mts运行一些特定的方法来发送数据到.asmx服务. 我的问题是我是否需要使用线程或定时器.这种方法执行应该发生在用户与应用程序交互时. 即在该方法执
我正在开发一个
WPF客户端应用程序.该应用程序定期向webservice发送数据.当用户登录到应用程序时,我希望每5 mts运行一些特定的方法来发送数据到.asmx服务.
我的问题是我是否需要使用线程或定时器.这种方法执行应该发生在用户与应用程序交互时. 任何资源寻找? 解决方法
我将推荐使用新的async / await关键字的System.Threading.Tasks命名空间.
// The `onTick` method will be called periodically unless cancelled. private static async Task RunPeriodicAsync(Action onTick,TimeSpan dueTime,TimeSpan interval,CancellationToken token) { // Initial wait time before we begin the periodic loop. if(dueTime > TimeSpan.Zero) await Task.Delay(dueTime,token); // Repeat this loop until cancelled. while(!token.IsCancellationRequested) { // Call our onTick function. onTick?.Invoke(); // Wait to repeat again. if(interval > TimeSpan.Zero) await Task.Delay(interval,token); } } 那么你可以在某处调用这个方法: private void Initialize() { var dueTime = TimeSpan.FromSeconds(5); var interval = TimeSpan.FromSeconds(5); // TODO: Add a CancellationTokenSource and supply the token here instead of None. RunPeriodicAsync(OnTick,dueTime,interval,CancellationToken.None); } private void OnTick() { // TODO: Your code here } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- c# – 将机密设置存储在.cs文件而不是Web.config中是否安全
- objective-c – tableview – 无法识别的选择器didSelectRo
- 来自Ajax的报告错误调用了MVC中的PartialView方法
- 页面中调用swf 时AllowScriptAccess 参数
- ruby-on-rails – 来自Rack中间件的Alter Rails params has
- popuWindow
- rspec – Capybara似乎没有等待(因为它应该做!?)(Async a
- 为什么会有PostgreSQL龟?
- ruby-on-rails – 使用rails form_tag关闭自动完成功能
- Libstrophe 库理解