我有一个async方法:
public async Task<string> GenerateCodeAsync()
{
string code = await GenerateCodeService.GenerateCodeAsync();
return code;
}
Run Code Online (Sandbox Code Playgroud)
我需要从同步方法中调用此方法.
如何在不必复制GenerateCodeAsync方法的情况下执行此操作以使其同步工作?
更新
然而找不到合理的解决方案
但是,我看到HttpClient已经实现了这种模式
using (HttpClient client = new HttpClient())
{
// async
HttpResponseMessage responseAsync = await client.GetAsync(url);
// sync
HttpResponseMessage responseSync = client.GetAsync(url).Result;
}
Run Code Online (Sandbox Code Playgroud) PHP中有没有办法进行异步HTTP调用?我不关心响应,我只想做类似的事情file_get_contents(),但是在执行其余代码之前不要等待请求完成.这对于在我的应用程序中引发排序的"事件"或触发长进程非常有用.
有任何想法吗?
我有一些担心在ASP.NET MVC中使用异步操作.当它提高了我的应用程序的性能,并且在做它不是?
首先,这是一个非常具体的例子,它将错误的方式用于将异步调用改造成一个非常同步的代码库,该代码库有数千行,而且时间目前还没有能力对"执行"进行更改对的." 它伤害了我生命中的每一根纤维,但现实和理想往往不会啮合.我知道这很糟糕.
好的,那个方法,我怎么做到这样我可以:
function doSomething() {
var data;
function callBack(d) {
data = d;
}
myAsynchronousCall(param1, callBack);
// block here and return data when the callback is finished
return data;
}
Run Code Online (Sandbox Code Playgroud)
示例(或缺少)都使用库和/或编译器,这两者对于该解决方案都不可行.我需要一个如何使其阻塞的具体示例(例如,在调用回调之前不要离开doSomething函数)不要冻结UI.如果在JS中可以做到这样的话.
我有一个需要调用shell脚本的PHP脚本,但根本不关心输出.shell脚本会进行大量的SOAP调用,并且完成起来很慢,因此我不想在等待回复时减慢PHP请求的速度.实际上,PHP请求应该能够在不终止shell进程的情况下退出.
我已经研究过的各种exec(),shell_exec(),pcntl_fork(),等功能,但他们都不似乎提供正是我想要的.(或者,如果他们这样做,我不清楚如何.)有什么建议吗?
昨天我正在讨论新的C#"异步"功能,特别是深入研究生成的代码的样子和the GetAwaiter()/ BeginAwait()/ EndAwait()调用.
我们在C#编译器生成的状态机中查看了一些细节,有两个方面我们无法理解:
Dispose()方法和$__disposing变量(并且该类没有实现IDisposable).state在任何调用之前将内部变量设置为0 EndAwait(),当0通常表示"这是初始入口点"时.我怀疑在异步方法中做一些更有趣的事情可以回答第一点,尽管如果有人有任何进一步的信息我会很高兴听到它.然而,这个问题更多的是关于第二点.
这是一段非常简单的示例代码:
using System.Threading.Tasks;
class Test
{
static async Task<int> Sum(Task<int> t1, Task<int> t2)
{
return await t1 + await t2;
}
}
Run Code Online (Sandbox Code Playgroud)
...这里是为MoveNext()实现状态机的方法生成的代码.这是直接从Reflector复制的 - 我没有修复不可言换的变量名:
public void MoveNext()
{
try
{
this.$__doFinallyBodies = true;
switch (this.<>1__state)
{
case 1:
break;
case 2:
goto Label_00DA;
case -1:
return;
default:
this.<a1>t__$await2 = this.t1.GetAwaiter<int>();
this.<>1__state = 1;
this.$__doFinallyBodies = …Run Code Online (Sandbox Code Playgroud) 2009年12月1日,Google宣布支持异步Google Analytics跟踪.
使用<script>标记的async指令实现异步跟踪.
哪些浏览器支持async指令(<script async="async" />)以及哪个版本?
如何测试使用Junit激发异步进程的方法?
我不知道如何让我的测试等待进程结束(它不是一个单元测试,它更像是一个集成测试,因为它涉及几个类而不仅仅是一个)
我一直在阅读nodebeginner 而且我遇到了以下两段代码.
第一个:
var result = database.query("SELECT * FROM hugetable");
console.log("Hello World");
Run Code Online (Sandbox Code Playgroud)
第二个:
database.query("SELECT * FROM hugetable", function(rows) {
var result = rows;
});
console.log("Hello World");
Run Code Online (Sandbox Code Playgroud)
我得到了他们应该做的事情,他们查询数据库以检索查询的答案.然后console.log('Hello world').
第一个应该是同步代码.第二个是异步代码.
两件作品之间的区别对我来说非常模糊.输出会是什么?
谷歌搜索异步编程也没有帮助我.
我认为它们基本上是相同的 - 编写在处理器之间分割任务的程序(在具有2个以上处理器的机器上).然后我正在阅读https://msdn.microsoft.com/en-us/library/hh191443.aspx,其中说
异步方法旨在实现非阻塞操作.异步方法中的await表达式在等待的任务运行时不会阻止当前线程.相反,表达式将方法的其余部分作为延续进行注册,并将控制权返回给异步方法的调用者.
async和await关键字不会导致创建其他线程.异步方法不需要多线程,因为异步方法不能在自己的线程上运行.该方法在当前同步上下文上运行,并仅在方法处于活动状态时在线程上使用时间.您可以使用Task.Run将CPU绑定的工作移动到后台线程,但后台线程无助于正在等待结果可用的进程.
我想知道是否有人可以为我翻译成英文.它似乎区分了异步性(是一个单词?)和线程,并暗示你可以拥有一个具有异步任务但没有多线程的程序.
现在我理解异步任务的想法,例如pg上的示例.Jon Skeet的C#In Depth,第三版中的 467
async void DisplayWebsiteLength ( object sender, EventArgs e )
{
label.Text = "Fetching ...";
using ( HttpClient client = new HttpClient() )
{
Task<string> task = client.GetStringAsync("http://csharpindepth.com");
string text = await task;
label.Text = text.Length.ToString();
}
}
Run Code Online (Sandbox Code Playgroud)
该async关键字的意思是" 这个功能,无论何时它被调用时,不会在这是需要的一切它的完成被称为它的呼叫后,上下文调用."
换句话说,将它写在某个任务的中间
int x = 5;
DisplayWebsiteLength();
double y = Math.Pow((double)x,2000.0);
Run Code Online (Sandbox Code Playgroud)
,因为DisplayWebsiteLength()与"无关" x或y将导致DisplayWebsiteLength()"在后台"执行,如
processor 1 | processor 2
-------------------------------------------------------------------
int …Run Code Online (Sandbox Code Playgroud) c# parallel-processing multithreading asynchronous async-await
asynchronous ×10
c# ×4
async-await ×3
javascript ×3
asp.net ×2
php ×2
c#-5.0 ×1
html ×1
http ×1
java ×1
junit ×1
node.js ×1
performance ×1
shell ×1
synchronous ×1
unit-testing ×1