草庐IT

Asynchronous

全部标签

c# - 如何编写异步 LINQ 查询?

看了一堆LINQ相关的东西,突然发现没有文章介绍如何写异步LINQ查询。假设我们使用LINQtoSQL,下面的语句很清楚。但是,如果SQL数据库响应缓慢,则使用该代码块的线程将受到阻碍。varresult=fromiteminProductswhereitem.Price>3selectitem.Name;foreach(varnameinresult){Console.WriteLine(name);}似乎当前的LINQ查询规范不对此提供支持。LINQ有什么办法可以做异步编程吗?就像有回调一样工作结果准备好使用时发出通知,不会对I/O造成任何阻塞延迟。 最

c# - 如何编写异步 LINQ 查询?

看了一堆LINQ相关的东西,突然发现没有文章介绍如何写异步LINQ查询。假设我们使用LINQtoSQL,下面的语句很清楚。但是,如果SQL数据库响应缓慢,则使用该代码块的线程将受到阻碍。varresult=fromiteminProductswhereitem.Price>3selectitem.Name;foreach(varnameinresult){Console.WriteLine(name);}似乎当前的LINQ查询规范不对此提供支持。LINQ有什么办法可以做异步编程吗?就像有回调一样工作结果准备好使用时发出通知,不会对I/O造成任何阻塞延迟。 最

c# - 异步/等待 - 是*并发*吗?

我一直在考虑C#5中的新异步内容,并提出了一个特定问题。我知道await关键字是一个巧妙的编译器技巧/语法糖来实现continuationpassing,方法的其余部分被分解为Task对象并排队按顺序运行,但控制权返回给调用方法。我的问题是我听说目前这一切都在一个线程上。这是否意味着这种异步的东西真的只是一种将延续代码转换为Task对象然后在每个任务完成后调用Application.DoEvents()开始下一个任务的方法?还是我遗漏了什么?(问题的这一部分是修辞性的-我完全知道我错过了一些东西:)) 最佳答案 它是并发的,从某种意

c# - 异步/等待 - 是*并发*吗?

我一直在考虑C#5中的新异步内容,并提出了一个特定问题。我知道await关键字是一个巧妙的编译器技巧/语法糖来实现continuationpassing,方法的其余部分被分解为Task对象并排队按顺序运行,但控制权返回给调用方法。我的问题是我听说目前这一切都在一个线程上。这是否意味着这种异步的东西真的只是一种将延续代码转换为Task对象然后在每个任务完成后调用Application.DoEvents()开始下一个任务的方法?还是我遗漏了什么?(问题的这一部分是修辞性的-我完全知道我错过了一些东西:)) 最佳答案 它是并发的,从某种意

c# - IntPtr.Zero 是否等同于 null?

我正在尝试将ReadFile设置为根据MSDN异步运行,我需要将lpNumberOfBytesRead设置为null:"UseNULLforthisparameterifthisisanasynchronousoperationtoavoidpotentiallyerroneousresults."例如,如果我有以下内容:[DllImport("kernel32.dll",SetLastError=true,CharSet=CharSet.Auto)]publicstaticexternboolReadFile(IntPtrhFile,outbyte[]aBuffer,intcbToR

c# - IntPtr.Zero 是否等同于 null?

我正在尝试将ReadFile设置为根据MSDN异步运行,我需要将lpNumberOfBytesRead设置为null:"UseNULLforthisparameterifthisisanasynchronousoperationtoavoidpotentiallyerroneousresults."例如,如果我有以下内容:[DllImport("kernel32.dll",SetLastError=true,CharSet=CharSet.Auto)]publicstaticexternboolReadFile(IntPtrhFile,outbyte[]aBuffer,intcbToR

c# - 异步与 "old async delegate"的即发即弃

我正在尝试用一种新语法替换旧的即发即弃调用,希望更加简单,但它似乎让我望而却步。这是一个例子classProgram{staticvoidDoIt(stringentry){Console.WriteLine("Message:"+entry);}staticasyncvoidDoIt2(stringentry){awaitTask.Yield();Console.WriteLine("Message2:"+entry);}staticvoidMain(string[]args){//oldwayActionasync=DoIt;async.BeginInvoke("Test",ar=

c# - 异步与 "old async delegate"的即发即弃

我正在尝试用一种新语法替换旧的即发即弃调用,希望更加简单,但它似乎让我望而却步。这是一个例子classProgram{staticvoidDoIt(stringentry){Console.WriteLine("Message:"+entry);}staticasyncvoidDoIt2(stringentry){awaitTask.Yield();Console.WriteLine("Message2:"+entry);}staticvoidMain(string[]args){//oldwayActionasync=DoIt;async.BeginInvoke("Test",ar=

c# - 我是否应该担心 "This async method lacks ' 等待运算符(operator)并同步运行“警告

我有一个公开一些异步方法的接口(interface)。更具体地说,它定义了返回Task的方法。或Task.我正在使用async/await关键字。我正在实现这个接口(interface)。但是,在其中一些方法中,此实现没有任何等待。出于这个原因,我收到编译器警告“CS1998:此异步方法缺少'await'运算符并将同步运行......”我明白为什么我会收到这些警告,但想知道在这种情况下我是否应该对它们采取任何措施。忽略编译器警告感觉不对。我知道我可以通过等待Task.Run来修复它但是对于只执行一些廉价操作的方法来说,这是错误的。听起来它也会给执行增加不必要的开销,但我也不确定它是否已

c# - 我是否应该担心 "This async method lacks ' 等待运算符(operator)并同步运行“警告

我有一个公开一些异步方法的接口(interface)。更具体地说,它定义了返回Task的方法。或Task.我正在使用async/await关键字。我正在实现这个接口(interface)。但是,在其中一些方法中,此实现没有任何等待。出于这个原因,我收到编译器警告“CS1998:此异步方法缺少'await'运算符并将同步运行......”我明白为什么我会收到这些警告,但想知道在这种情况下我是否应该对它们采取任何措施。忽略编译器警告感觉不对。我知道我可以通过等待Task.Run来修复它但是对于只执行一些廉价操作的方法来说,这是错误的。听起来它也会给执行增加不必要的开销,但我也不确定它是否已