調用異步服務時的超時處理

主線程調用異步服務后,通過設定主線程的等待時間來進行超時處理。
Demo如下:

?

AsyncTask.cs?

?

ExpandedBlockStart.gif
?1?using?System;
?2?using?System.Threading.Tasks;
?3?using?MyCSharp.ExternalService;
?4?
?5?namespace?MyCSharp.Grammas
?6?{
?7?????public?class?AsyncTask
?8?????{
?9?????????private?readonly?int?_timeout;
10?
11?????????private?AsyncTask()
12?????????{
13?????????}
14?
15?????????///?<summary>
16?????????///?構造函數
17?????????///?</summary>
18?????????///?<param?name="timeout">超時時間</param>
19?????????public?AsyncTask(Int32?timeout?=?30000)
20?????????{
21?????????????_timeout?=?timeout;
22?????????}
23?
24?????????///?<summary>
25?????????///?執行任務
26?????????///?</summary>
27?????????///?<returns></returns>
28?????????public?bool?Execute()
29?????????{
30?????????????var?task?=?Task.Factory.StartNew(this.CallExternalSevice);
31?????????????return?task.Wait(_timeout);
32?
33?????????}
34?
35?????????///?<summary>
36?????????///?調用外部服務
37?????????///?</summary>
38?????????private?void?CallExternalSevice()
39?????????{
40?????????????new?DemoService().Response();
41?????????}
42?
43?
44?????}
45?}
View Code

?AsyncTaskTest.cs

?

ExpandedBlockStart.gif
?1?using?Microsoft.VisualStudio.TestTools.UnitTesting;
?2?using?MyCSharp.Grammas;
?3?
?4?namespace?MyCSharp.FunctionTests
?5?{
?6?????[TestClass]
?7?????public?class?AsyncTaskTest
?8?????{
?9?????????[TestMethod]
10?????????public?void?ExecuteTest_LessThanResponseTime_TimeOut()
11?????????{
12?????????????var?result?=?new?AsyncTask(50).Execute();
13?????????????Assert.IsFalse(result);
14?????????}
15?
16?????????[TestMethod]
17?????????public?void?ExecuteTest_EqualsResponseTime_Success()
18?????????{
19?????????????var?result?=?new?AsyncTask(100).Execute();
20?????????????Assert.IsFalse(result);
21?????????}
22?
23?????????[TestMethod]
24?????????public?void?ExecuteTest_MoreThanResponseTime_Success()
25?????????{
26?????????????var?result?=?new?AsyncTask(120).Execute();
27?????????????Assert.IsTrue(result);
28?????????}
29?????}
30?}
View Code

?DemoService.cs

ExpandedBlockStart.gif
?1?using?System.Threading;
?2?
?3?namespace?MyCSharp.ExternalService
?4?{
?5?????public?class?DemoService
?6?????{
?7?????????///?<summary>
?8?????????///?服務響應
?9?????????///?</summary>
10?????????public?void?Response()
11?????????{
12?????????????Thread.Sleep(100);
13?????????}
14?????}
15?}
View Code

?

轉載于:https://www.cnblogs.com/markhe/p/5587987.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/256989.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/256989.shtml
英文地址,請注明出處:http://en.pswp.cn/news/256989.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

linux下一個apache+tomcat負載均衡和集群

先說一下我的環境 一個ubuntu虛擬機&#xff0c; 一個apache2.2示例 兩tomcat1.7示例 1.安裝apacheserver sudo apt-get install apache2假設要重新啟動的話&#xff0c;執行命令&#xff1a; sudo /etc/init.d/apache2 restart ubuntu下的apache會默認創建路徑/var/www&#x…

JS實現css屬性動畫效果

html代碼 <!DOCTYPE html> <html><head><meta charset"UTF-8"><title>css屬性運動框架</title><style>body,div{margin: 0;padding: 0;}ul,li{list-style: none;}ul li{width: 200px;height: 100px;background: yellowgre…

學習筆記(24):Python網絡編程并發編程-進程與線程的區別

立即學習:https://edu.csdn.net/course/play/24458/296438?utm_sourceblogtoedu 線程與進程的區別&#xff1a; 1.消耗區別&#xff1a;進程>線程 1&#xff09;進程運行結果 #進程運行 from multiprocessing import Process def task(name):print("我是%s"%na…

Codeforces Beta Round #1

A /*************************************************************************> File Name: A.cpp> Author: opas_chenxin> Mail: 1017370773qq.com > Created Time: 2016年05月06日 星期五 02時22分23秒 ************************************************…

windows系統中創建線程常用哪幾個函數,有什么區別?

windows系統中創建線程常用哪幾個函數&#xff1f; 在windows系統中創建線程的函數有&#xff1a; CreadThread&#xff0c;AfxBeginThread&#xff0c;_beginthread&#xff0c;_beginthreadex。 他們的區別在于使用的場景不同。 CreateThread是Windows的API函數(SDK函數的標…

java.lang.String小測試

還記得java.lang.String么&#xff0c;如果現在給你一個小程序&#xff0c;你能說出它的結果么 1 public static String ab(String a){2 return a "b";3 }4 5 public static void testAb(){6 String x "a";7 ab…

Oracle傳輸表空間

一、簡介 可傳輸表空間(還有個集)最大的優勢是其速度比export/import或unload/load要快的多。因為可傳輸表空間主要是復制數據文件到目標路徑&#xff0c;然后再使用export/import或Data Pump export/import等應用僅導出/導入表空間對象的元數據到新數據庫。 &#xff08;1&…

進程控制塊PCB結構體 task_struct 描述

進程控制塊&#xff0c;英文名&#xff08;Processing Control Block&#xff09;&#xff0c;簡稱 PCB 。 進程控制塊是系統為了管理進程設置的一個專門的數據結構&#xff0c;主要表示進程狀態。 每一個進程都對應一個PCB來維護進程相關的信息&#xff1b; 在Linux中&#xf…

基于OpenCV與tensorflow實現實時手勢識別

基于OpenCV與tensorflow object detection API使用遷移學習&#xff0c;基于SSD模型訓練實現手勢識別完整流程&#xff0c;涉及到數據集收集與標注、VOC2012數據集制作&#xff0c;tfrecord數據生成、SSD遷移學習與模型導出&#xff0c;OpenCV攝像頭實時視頻流讀取與檢測處理&a…

學習筆記(25):Python網絡編程并發編程-Thread其他屬性和守護線程

立即學習:https://edu.csdn.net/course/play/24458/296440?utm_sourceblogtoedu 1.Thread其他的屬性 CurrentThread().getName():獲得當前線程的名字 t.is_Alive:判斷線程是否還在運行 t.join():等待線程運行結束再執行join后面的代碼 t.setName("name"):為線程…

AIX主機信任關系配置

1.配置主機信任關系的時候&#xff0c;需要先在兩臺主機/etc/hosts文件中添加要信任主機的&#xff29;&#xff30;&#xff0c;假設有(192.168.8.190 aix190,192.168.8.191 aix191)2個主機,在191主機配置如下所示 192.168.8.190 aix190 2.如果系統配置DNS&#xff0c;則需要去…

Sprint2團隊貢獻分

團隊貢獻分&#xff1a; 郭志豪&#xff1a;31% http://www.cnblogs.com/gzh13692021053/ 楊子健&#xff1a;22%http://www.cnblogs.com/yzj666/ 譚宇森&#xff1a;23%http://www.cnblogs.com/yzj666/ 劉森松&#xff1a;24% http://www.cnblogs.com/lssh/轉載于:https://w…

學習筆記(26):Python網絡編程并發編程-GIL與自定義互斥鎖的區別

立即學習:https://edu.csdn.net/course/play/24458/296443?utm_sourceblogtoedu 1.GIL的基本概念 答&#xff1a;GIL本質上就是一把鎖&#xff0c;只是他是一把在python解釋器上的鎖 2.GIL與互斥鎖的區別 答&#xff1a; 1&#xff09;GIL保護的是在python解釋器上的參數&a…

多目標跟蹤檢測

方法&#xff1a; 1、實時性&#xff0c;每幀視頻10ms 2、方法&#xff0c;首先深度學習檢測到目標&#xff0c;然后再寫跟蹤算法

2014年最具人氣國外WORDPRESS主題

在國外&#xff0c;WrodPress這個博客系統極為受歡迎&#xff0c;使用WordPress來建站可以降低很多成本&#xff0c;另外還能以十分便宜的價格獲得一個漂亮的WP網站模板。 今天向大家分享來自Themeforest 2014年最具人氣的高級WrodPress主題&#xff0c;這些主題無論是設計還是…

軟件工程學習感想

通過這半學期我對軟件工程的學習&#xff0c;從軟件工程的基礎到考試用戶的需求分析與求解&#xff0c;最后到黑盒白盒測試通過自身做過的一些案例&#xff0c;講解了軟件工程這門本身枯燥乏味的課程&#xff0c;這不僅增強了學生學習的積極性&#xff0c;也通過讓我們自己去做…

開源視覺salm算法介紹

當前的開源SLAM方案 開源方案傳感器形式地址鏈接MonoSLAM單目https://github.com/hanmekim/SceneLib2 PTAM單目 http://www.robots.ox.ac.uk/~gk/PTAM/ORB-SLAM 單目為主http://webdiis.unizar.es/~raulmur/orbslam/ORB-SLAM2單目https://github.com/raulmur/ORB_SLAM2LSD-SLAM…

學習筆記(27):Python網絡編程并發編程-GIL與多線程

立即學習:https://edu.csdn.net/course/play/24458/296444?utm_sourceblogtoedu GIL與多線程 1.須知&#xff1a; 1&#xff09;cpu主要是為了提升計算性能&#xff0c;增加CPU提升計算性能&#xff1b; 2&#xff09;每一個CPU一旦遇到阻塞狀態都會處于等待狀態&#xff0c…

J0ker的CISSP之路:復習-Access Control(3)

本文同時發表在&#xff1a;[url]http://netsecurity.51cto.com/art/200801/63649.htm[/url] 在《J0ker的CISSP之路》系列的上一篇文章里&#xff0c;J0ker給大家介紹了訪問控制CBK里面一些常見的破壞信息資產保密性的威脅類型&#xff0c;那么什么類型的威脅會破壞信息資產的完…

C#中對泛型List進行分組輸出元素

背景&#xff1a;在輸出列表時&#xff0c;往往需要按照某一字段進行分組&#xff0c;比如在輸出城市列表時&#xff0c;按照首字母進行分組&#xff0c;輸出學生列表時&#xff0c;按照年級進行分組&#xff0c;然后再對分組的結果按照其他的字段進行排序。 如存在以下STU學生…