相关疑难解决方法(0)

如何以及何时使用'async'和'await'

从我的理解主要事情之一asyncawait要做的就是让代码易于读写-但使用它们等于产卵后台线程来执行持续时间长的逻辑?

我正在尝试最基本的例子.我在内联添加了一些评论.你能为我澄清一下吗?

// I don't understand why this method must be marked as `async`.
private async void button1_Click(object sender, EventArgs e)
{
    Task<int> access = DoSomethingAsync();
    // task independent stuff here

    // this line is reached after the 5 seconds sleep from 
    // DoSomethingAsync() method. Shouldn't it be reached immediately? 
    int a = 1; 

    // from my understanding the waiting should be done here.
    int x = await access; 
}

async Task<int> DoSomethingAsync()
{
    // is …
Run Code Online (Sandbox Code Playgroud)

.net c# asynchronous async-await

989
推荐指数
19
解决办法
78万
查看次数

使用HttpClient从Web API发布JsonObject

我正在尝试从Web API发布一个JsonObject使用HttpClient.我不太确定如何解决这个问题,并且在示例代码方面找不到多少内容.

这是我到目前为止所拥有的:

var myObject = (dynamic)new JsonObject();
myObject.Data = "some data";
myObject.Data2 = "some more data";

HttpClient httpClient = new HttpClient("myurl");
httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

HttpResponseMessage response = httpClient.Post("", ???);
Run Code Online (Sandbox Code Playgroud)

我想我需要把我JsonObject当成一个StreamContent但是我已经挂了这一步.

c# asp.net wcf wcf-web-api asp.net-web-api

259
推荐指数
5
解决办法
29万
查看次数

C#异步 - 它是如何工作的?

微软今天(2010年10月28日)宣布推出Visual Studio Async CTP,它将asyncawait关键字引入C#/ VB以实现异步方法.

首先,我认为编译器将关键字转换为线程的创建,但根据白皮书和Anders Hejlsberg的PDC演示文稿(在31:00),异步操作完全在主线程上发生.

如何在同一个线程上并行执行操作?在技​​术上如何可能以及在IL中实际翻译的功能是什么?

.net c# vb.net asynchronous async-await

47
推荐指数
3
解决办法
1万
查看次数

等待与异步方法中的Task.Result

执行以下操作之间有什么区别:

async Task<T> method(){
    var r = await dynamodb.GetItemAsync(...)
    return r.Item;
}
Run Code Online (Sandbox Code Playgroud)

VS

async Task<T> method(){
    var task = dynamodb.GetItemAsync(...)
    return task.Result.Item;
}
Run Code Online (Sandbox Code Playgroud)

在我的情况下,由于某种原因,只有第二个工作.第一个似乎永远不会结束.

c# asynchronous task async-await amazon-dynamodb

32
推荐指数
2
解决办法
6万
查看次数

如何避免异步无效?

注意:这个问题是 Unity 特有的。

我读到这async void是要避免的。 我尝试使用 来执行此操作Result,但我的应用程序一直锁定。如何避免使用 async void?

public async void PrintNumberWithAwait()
{
    int number = await GetNumber();
    Debug.Log(number); //Successfully prints "5"
}

public void PrintNumberWithResult()
{
    int number = GetNumber().Result;
    Debug.Log(number); //Application Freezes
}

private async Task<int> GetNumber()
{
    await Task.Delay(1000);
    return 5;
}
Run Code Online (Sandbox Code Playgroud)

我认为这是正确的,但我一定错过了一些东西。如何在没有 的情况下使用 async/await async void

我使用以下代码单独运行测试(一次注释掉一个):

PrintNumberWithAwait();
PrintNumberWithResult();
Run Code Online (Sandbox Code Playgroud)

c# unity-game-engine async-await

7
推荐指数
2
解决办法
2801
查看次数

WCFclient仅操作Async .Net core 2.0

我在asp.net core 2.0中将wcf服务端点添加到了连接的服务中,然后尝试使用它,但是对于客户端,只有以..async结尾的功能

我不想使用... async。但是没有.async就没有功能

这有什么问题我该怎么办?

而不是使用

 var response = SystemClient.SearchCountriesAsync(....
Run Code Online (Sandbox Code Playgroud)

我想用那个

 var response = SystemClient.SearchCountries(...
Run Code Online (Sandbox Code Playgroud)

但它给那个错误

错误CS1061'SystemClient'不包含'SearchCountries'的定义,并且找不到扩展方法'SearchCountries'接受类型为'SystemClient'的第一个参数(您是否缺少using指令或程序集引用?)

在此处输入图片说明

asp.net wcf asynchronous .net-core asp.net-core-2.0

4
推荐指数
2
解决办法
2982
查看次数

为什么我需要使这个方法异步?

我有与此非常相似的代码(我稍微简化了代码以演示我试图弄清楚的行为的本质)。

public async System.Threading.Tasks.Task<bool> IsNumberOdd(int numToTest)
{
    if (numToTest % 2 == 0)
    {
        return false;
    }
    else
    {
        return true;
    }
}
Run Code Online (Sandbox Code Playgroud)

如果我不使用async关键字,我会收到关于无法将 abool转换为a 的抱怨Task<bool>。我假设这里涉及一些语法糖。查看 IL(我对 IL 不太熟悉)似乎 async 关键字导致任务运行,然后返回值是任务的结果。我理解正确吗?

顺便说一句,如果这是一个骗局,或者如果有一些博客文章讨论了这个问题,请随时指出并关闭它。我不是想给我的代表打气;我试图了解这段代码发生了什么。

编辑:


对于那些问“为什么这个方法是异步的?”的人——因为我试图构建一个小而简单的代码示例来演示这个问题。我还应该添加一个调用代码的示例,但我试图使代码尽可能小而简单。

c# asynchronous task-parallel-library async-await

1
推荐指数
1
解决办法
259
查看次数