我正在开发Windows8运行时组件,因此公共(public)接口(interface)不能包含Task因为它不是Windows运行时类型。这意味着我无法将该方法标记为async不能awaitprivateasync我的库中的方法。这导致了对如何处理我的应用程序逻辑的一些困惑。这就是我同步做我想做的事情的方式。Resultr=TryGetAuthResultFromFile();if(r!=null){returnr;}r=GetAuthResultFromWebAuthenticationBroker();returnr;问题是TryGetResultFrom文件是asyncTask
关于如何在库中提供相同功能的同步和异步实现,我有几个问题。我会先问他们,然后提供下面的示例代码(实际上很多,但实际上很简单)。有没有办法避免违反DRY原则?考虑JsonStreamReader.Read的实现,JsonStreamWriter.Write,JsonStreamWriter.Flush,ProtocolMessenger.Send,ProtocolMessenger.Receive及其异步版本。在对同一方法的同步和异步版本进行单元测试时,是否有一种方法可以避免违反DRY原则?我正在使用NUnit,尽管我想所有框架在这方面应该都是一样的。应该如何实现返回Task的方法或Ta
根据我使用的是基于async/await的代码还是基于TPL的代码,我得到了关于清理逻辑CallContext的两种不同行为。如果我使用以下异步/等待代码,我可以完全按照预期设置和清除逻辑CallContext:classProgram{staticasyncTaskDoSomething(){CallContext.LogicalSetData("hello","world");awaitTask.Run(()=>Debug.WriteLine(new{Place="Task.Run",Id=Thread.CurrentThread.ManagedThreadId,Msg=CallC
问题的延续here:在上述问题中,我有以下函数返回一个任务类型的对象(用于增量测试目的):privatestaticTaskGetInstance(){returnnewTask((Func>)(async()=>{awaitSimpleMessage.ShowAsync("TEST");returnnewobject();}));}当我调用awaitGetInstance();时,该函数被调用(并且我假设任务已返回,因为没有抛出异常)但任务就在那里。我只能猜测我做错了。我不希望此函数返回一个已经在运行的任务(即IMPERATIVE).如何异步运行此函数返回的任务?
VisualStudio提示以下内容:publicRelayCommandSendRegistrationCommand{get;privateset;}publicasyncvoidSendRegistration(){HttpClientclient=newHttpClient();varresponse=awaitclient.GetStringAsync("url");//...todo}Cannotawait'System.Threading.Tasks.Task'我以为我以前做过这个,GetStringAsync不可等待? 最佳答案
MockdbContext;[TestFixtureSetUp]publicvoidSetupDbContext(){dbContext=newMock();dbContext.Setup(c=>c.SaveChanges()).Verifiable();dbContext.Setup(c=>c.SaveChangesAsync()).Verifiable();dbContext.Setup(c=>c.Customers.Add(It.IsAny())).Returns(It.IsAny()).Verifiable();}[Test]publicasyncTaskAddCustomer
我在msdn文档中找到了异步使用XmlWriter的示例http://msdn.microsoft.com/en-us/library/system.xml.xmlwriter.aspxasyncTaskTestWriter(Streamstream){XmlWriterSettingssettings=newXmlWriterSettings();settings.Async=true;using(XmlWriterwriter=XmlWriter.Create(stream,settings)){awaitwriter.WriteStartElementAsync("pf","ro
以下代码的目标是将任何给定函数转换为可等待函数。这个想法是在从数据库中获取数据时使用它,从而使代码可以灵活地使用同步获取函数(我当前ORM的强加),或者使用与异步完全相同的函数。我知道代码背后的概念可能有很多问题。到目前为止,我只是试图摆脱编译器错误,以便我可以运行代码并检查行为。但是我当然愿意事先讨论这个概念,如果它背后的整个想法是错误的,那么我会更有效地利用我的时间寻找另一个解决方案。asyncstaticvoidMain(){//Thefollowinglinegivesacompilererror://Error1Thebestoverloadedmethodmatchfor'
这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:HowdoItestanasyncmethodwithNUnit,eventuallywithanotherframework?我想知道的是如何在C#单元测试中断言异步方法抛出异常?我能够在VisualStudio2012中使用Microsoft.VisualStudio.TestTools.UnitTesting编写异步单元测试,但还没有弄清楚如何测试异常。我知道xUnit.net也以这种方式支持异步测试方法,虽然我还没有尝试过那个框架。为了说明我的意思,下面的代码定义了被测系统:usingSystem;u
假设我有这个简单的片段:asyncvoidbutton_Click(objectsender,RoutedEventArgse){awaitTask.Factory.StartNew(()=>{Console.WriteLine("start");Thread.Sleep(5000);Console.WriteLine("end");});}显然,每次我按下该按钮时,都会启动一个新任务,即使之前的任务仍在运行。我如何将任何新任务推迟到所有以前的任务完成之前?更多细节:在上面的示例中,每个新任务都与之前的任务相同。然而,在原始上下文中,任务的顺序很重要:参数可能会改变(我可以使用Date