草庐IT

async_read

全部标签

c# - 为什么不使用 async/await 关键字时异步单元测试会失败?

根据thisdiscussion,下面两种方法应该没有区别:publicasyncTaskFoo(){awaitDoSomethingAsync();}publicTaskFoo(){returnDoSomethingAsync();}实际上,对于非常简单的方法来说,不async/await关键字的调用似乎是首选,因为它们可以消除一些开销。然而,这显然并不总是适用于单元测试。MSTest[TestClass]publicclassAsyncTest{[TestMethod]publicasyncTaskTest1(){awaitTask.Delay(0);}[TestMethod]pu

c# - xUnit 和 Moq 不支持 async - await 关键字

我正在尝试探索如何将async和await关键字应用于我的xUnit测试。我正在使用xUnit1.9和AsyncCTP1.3。这是我的测试用例我有一个指定一个异步方法调用的接口(interface)publicinterfaceIDoStuffAsync{TaskAnAsyncMethod(stringvalue);}我有一个使用接口(interface)并调用异步方法的类publicclassUseAnAsyncThing{privatereadonlyIDoStuffAsync_doStuffAsync;publicUseAnAsyncThing(IDoStuffAsyncdoSt

c# - 使用 async/await 的异步 TcpListener 的正确方法

我一直在思考使用异步编程搭建TCP服务器的正确方式是什么。通常我会为每个传入请求生成一个线程,但我想使用ThreadPool的大部分内容,因此当连接空闲时,不会有阻塞的线程。首先,我会创建监听器并开始接受客户端,在本例中,是在控制台应用程序中:staticvoidMain(string[]args){CancellationTokenSourcecancellation=newCancellationTokenSource();varendpoint=newIPEndPoint(IPAddress.Parse("127.0.0.1"),8001);TcpListenerserver=n

c# - "Read only"C# 中的属性访问器

我有以下类(class):classSampleClass{privateArrayListmMyList;SampleClass(){//InitializemMyList}publicArrayListMyList{get{returnmMyList;}}}我希望用户能够获得mMyList,这就是为什么我通过属性公开“get”,但我不希望他们对对象进行更改(即MyList.Add(newClass());)回到我的类(class)。我想我可以返回对象的副本,但这可能会很慢,我正在寻找一种方法来提供编译时错误,通知用户他们不应该期望能够修改返回的属性(property)的值(valu

c# - ThreadPool 服务器的 async/await 等价物是什么?

我正在使用同步api和线程池在看起来像这样的tcp服务器上工作:TcpListenerlistener;voidServe(){while(true){varclient=listener.AcceptTcpClient();ThreadPool.QueueUserWorkItem(this.HandleConnection,client);//OralternativelynewThread(HandleConnection).Start(client)}}假设我的目标是以最低的资源使用率处理尽可能多的并发连接,这似乎很快就会受到可用线程数的限制。我怀疑通过使用非阻塞任务api,我将

c# - 将 Microsoft.Bcl.Async 与代码分析一起使用会导致错误

我正在尝试使用Microsoft.Bcl.Async和代码分析,但是当我运行代码分析时,出现一个或多个错误。我正在使用带有更新2的VisualStudio2012。这对我来说很容易重现:创建一个针对.Net4的新默认控制台应用程序。右键单击References,然后选择ManageNuGetPackages...单击Online并在SearchOnline框中键入async。您应该看到Asyncfor.NetFramework4...。点击安装并接受所有问题。向Main()添加一行内容:TaskEx.Delay(1000);和usingSystem.Threading.Tasks;转到

c# - C# (async ctp/.net 4.5) 中的异步递归是否安全?

在带有asyncctp或vs.net2011beta的C#中,我们可以像这样编写递归代码:publicasyncvoidAwaitSocket(){varsocket=awaitthis.AcceptSocketAsync();//awaitsocketand>>return在这个特定的示例中,代码异步等待一个tcp套接字,一旦它被接受,它将递归并异步等待另一个套接字。这似乎工作正常,因为await部分将使代码返回给调用者,因此不会导致堆栈溢出。这里有两个问题:如果我们忽略我们正在处理此示例中的套接字这一事实。以这种方式进行无栈递归可以吗?还是我缺少缺点?从IO的角度来看,上述代码是否

c# - 如果我正在调用 SqlReader.Read,我应该调用 SqlDataReader.HasRows

尝试在while(dr.read())函数之前添加一个if(dr.HasRows)是否有益。我的意思是,从技术上讲,如果它没有行,它就不会被读取,所以如果您先检查它会有关系吗?using(SqlDataReaderdr=cmd.ExecuteReader()){if(dr.HasRows){while(dr.Read()){....dostuffhere}}}或者如果您只是确保它具有要提供的值,这是否会本质上做完全相同的事情...using(SqlDataReaderdr=cmd.ExecuteReader()){while(dr.Read()){....dostuffhere}}

c# - 如何在 .NET 4.0 中使用 Microsoft.Bcl.Async 支持 TransactionScope 中的异步方法?

这个问题在这里已经有了答案:GetTransactionScopetoworkwithasync/await(4个答案)关闭2年前。我有一个类似的方法:publicasyncTaskSaveItemsAsync(IEnumerableitems){using(varts=newTransactionScope()){foreach(variteminitems){await_repository.SaveItemAsync(item);}await_repository.DoSomethingElse();ts.Complete();}}这当然有问题,因为TransactionScop

c# - 为什么 Enumerator.MoveNext 在与 using 和 async-await 一起使用时不能像我预期的那样工作?

我想通过一个List来枚举并调用异步方法。如果我这样做:publicasyncTaskNotWorking(){varlist=newList{1,2,3};using(varenumerator=list.GetEnumerator()){Trace.WriteLine(enumerator.MoveNext());Trace.WriteLine(enumerator.Current);awaitTask.Delay(100);}}结果是:True0但我希望它是:True1如果我删除using或awaitTask.Delay(100):publicvoidWorking1(){var