【c# – 单元测试使用异步调用的MassTransit消费者】教程文章相关的互联网学习教程文章

c# 异步调用 利用委托异步调用

1:调异步调用无回调函数using System;using Microsoft.VisualStudio.TestTools.UnitTesting;using System.Threading; namespace UnitTestProject1{[TestClass]public class UnitTest1{[TestMethod]public void TestMethod1(){new AsynchronousTest().Test();}} public class AsynchronousTest{////// 第一步:创建委托////////////public delegate int deletest(int a, int b);////// 第二步:创建方法////////////public int Add...

委托、异步调用、同步调用详解(C#)【代码】

namespace MyTest_MultiThread {class Program{static void Main(string[] args){Student stu1 = new Student() { ID = 1, PenColor = ConsoleColor.Yellow };Student stu2 = new Student() { ID = 2, PenColor = ConsoleColor.Green };Student stu3 = new Student() { ID = 3, PenColor = ConsoleColor.Red };/*//(同步调用:你做完了,我开始做,单线程)Action action1 = new Action(stu1.DoHomeWork);Action action2 = new Act...

C# 委托于跨线程异步调用【代码】

子线程访问主线程控件时,会报出错。 两种方法可以实现第一种是,设置线程的检查方式为无。 第二种是使用委托。第一种没什么好讲的,这里主要讲下第二种。 1,首先是委托 delegate (1)委托的定义:将方法作为方法的参数 (2)定义委托: delegate void dele(int a, int b);(4)给委托变量赋值 del=new dele(add);static void add(int a, int b) {Console.WriteLine("加法运算为{0}", a + b);} (5)调用委托 del(2, 3);全部代码: using S...

C#httpClient(阻止异步调用)死锁【代码】

现在的情况 有一个客户端通过HttpClient.GetAsync执行get请求.不幸的是,由于某种原因,我们需要阻止该调用. 为此,使用此Asynchelper类以避免上下文切换死锁(而不是仅使用.Result).public static class AsyncHelper{private static readonly TaskFactory _myTaskFactory = newTaskFactory(CancellationToken.None,TaskCreationOptions.None,TaskContinuationOptions.None,TaskScheduler.Default);public static void RunSync(Func<Ta...

C#异步调用垃圾回收【代码】

我正在使用Silverlight / WCF应用程序,当然在整个Silverlight程序中有许多异步调用.我想知道如何处理创建客户端类和订阅的最佳方法.具体来说,如果我在方法中订阅了事件,则该事件返回后是否超出范围?internal MyClass {public void OnMyButtonClicked(){var wcfClient = new WcfClient();wcfClient.SomeMethodFinished += OnMethodCompleted;wcfClient.SomeMethodAsync();}private void OnMethodCompleted(object sender, EventAr...

c# – “正在加载”异步调用的网页

我在ASP.NET / C#中有一个简单的网页.目前,为了完全呈现数据,我需要调用在后台线程上运行的代码块,并且可能需要几分钟才能完成.我已经明确了(使用页面声明中的async属性)执行并在完成后使用html返回正常.我想要它做的是允许我立即返回某种“加载页面”,然后在后台工作完成后更新该页面.现在,在处理后台工作时,我在页面上什么也得不到.任何关于最佳方式或聪明方式的想法都将非常感激! 谢谢, 西格解决方法:我同意上面发表的评论. 然...

c# – 与过期异步调用操作【代码】

我有一个经典的异步消息调度问题.本质上,我需要异步调度消息,然后在调度完成时捕获消息响应.问题是,我似乎无法弄清楚如何使任何一个请求周期自我过期和短路. 以下是我目前使用的模式示例: 为invokation定义的委托private delegate IResponse MessageDispatchDelegate(IRequest request);使用回调发送消息var dispatcher = new MessageDispatchDelegate(DispatchMessage); dispatcher.BeginInvoke(requestMessage, DispatchMessage...

c# – 在.NET中是否保持异步调用的顺序?用异步等待实现Logger?【代码】

我正在尝试创建一个简单的异步记录器.使日志记录调用非阻塞和尽可能不引人注目的想法.请考虑以下简化代码 – class Logger {public async void Log(string message) {LogTable log = new LogTable(); //LogTable is an SqlServer tablelog.Timestamp = DateTime.Now;log.Message = message;log.SomeProp = SomeVariableTimeCalculation();var db = new Entities(); //db is an EF6 contextdb.Entry(log).State = EntityState.Added...

c# – 取消异步调用(IAsyncResult)

我在.net WPF编程. 我有一个(第三方)API,它实现了Begin / End异步调用模式. BeginWork()函数返回IAsyncResult. 但是,一旦完成,就没有明显的取消/中止呼叫的方法. 有没有办法让这样的工作停止?如果这需要库作者明确提供取消方法,那么什么是杀死这个工作的方法,甚至是不合理的?我真的需要能够以某种方式阻止它,因为单个工作可能需要数小时才能完成! 谢谢!解决方法:如果实现不包含允许取消的特定代码,那么很可能您无法取消它.并非...

为什么HttpClient只允许异步调用? C#【代码】

显然HttpClient只允许Asnyc调用? 当然你可以像这样调用“.Result”:public ActionResult Index() {var someImportantData = httpClient.ReadAsStringAsync().Result; // Aparently I shouldn't do this according to the article.// or var someImportantData = Task.Run(() => Client.PostAsync()).Result;Return View( new MyViewModel(someImportantData)); }使它同步,但这显然是非常危险的,应该避免,因为它会导致死锁,如...

c# – 单元测试使用异步调用的MassTransit消费者【代码】

我们正在使用MassTransit异步消息传递(在RabbitMQ之上)来实现我们的微服务架构. 我们遇到了测试消费者的问题,而这些消费者又会进 下面的示例显示了一个简单的MassTransit使用者,它使用RestSharp进行出站调用并使用ExecuteAsync异步方法.public class VerifyPhoneNumberConsumer : Consumes<VerifyPhoneNumber>.Context {IRestClient _restClient;RestRequest _request;PhoneNumber _phoneNumber;PhoneNumberVerificationResponse _...

c# – 如何在MVC4中执行异步调用操作方法【代码】

我在这里有以下场景.如何在DB调用异步运行时进行一些并行处理./// <summary>/// Async query EF6.0/// </summary>/// <returns></returns>public async Task<ActionResult> AsyncQuery(){var result = await GetAsyncDepartments();Debug.WriteLine("Do some stuff here");return View("Index");}private async Task<List<Department>> GetAsyncDepartments(){var depts = new List<Department>();using (var newContext = new Dem...

c# – 如何对包含异步调用的方法进行单元测试?【代码】

我有一个包含这样的异步调用的方法:public void MyMethod() {...(new Action<string>(worker.DoWork)).BeginInvoke(myString, null, null);... }我正在使用Unity并且创建模拟对象不是问题,但是如何在不担心竞争条件的情况下测试DoWork的调用? 一个previous question提供了一个解决方案,但在我看来,等待处理是一个黑客(竞争条件仍然存在,虽然它几乎不可能提出). 编辑:好的,我想我可以用一般的方式提出这个问题,但似乎我必须进一步...

c# – 使用委托来异步调用方法是最佳做法吗?

This msdn article的标题是“如何异步调用Visual C#方法”. 文章说“使用代理进行异步调用”,我在脑海中回答“不一定,这只是一种方法”. 文章陈述的事实基调使我感到奇怪 – 在进行异步调用时使用委托是最佳实践,还是MS认为这是最佳实践?解决方法:在当前的.NET版本中,异步方法通常在与您触发它们的单独后台线程中处理,因此使用您可以在另一个线程中调用的委托来执行它是非常必要的. 但是,使用最近的C#Async CTP(可能会在C#5.0或其...

单元测试 - 相关标签