fdk*_*fsf 1 c# visual-studio-debugging visual-studio-2017
我是新手,所以请耐心等待.我正在调试并遇到问题:
var response = await client.GetAsync(uri);
Run Code Online (Sandbox Code Playgroud)
我编辑了这个问题,因此它符合最小,完整和可验证的例子.
我在这个语句上跳过调试器,以便在下一个语句中移动,但由于我仍然不知道原因,调试器似乎丢失了并且没有恢复.
每次我await打电话和转发时,每次都会发生这种情况.调试器断点刚刚消失.
以下是所有代码:
public class App : Application // superclass new in 1.3
{
public App ()
{
MainPage = new PinPage { Title = "Pins", Icon = "marker.png" };
}
}
public class PinPage : ContentPage
{
private async Task FetchDataAsync()
{
HttpClient client = new HttpClient();
string resultUrl = "http://myuser.gtempurl.com/Service1.svc/GetLocations";
var uri = new Uri(string.Format(resultUrl, string.Empty));
var response = await client.GetAsync(uri);
if (response.IsSuccessStatusCode)
{
string content = await response.Content.ReadAsStringAsync();
var obj = JsonConvert.DeserializeObject(content);
}
}
public PinPage ()
{
FetchDataAsync().GetAwaiter().GetResult();
}
}
Run Code Online (Sandbox Code Playgroud)
WCF服务不是问题.它发布在公共服务器上,因此始终可用.我从浏览器调用它,它返回预期的字符串.
我正在使用VS2017并在Android模拟器中进行调试.
以下是断点访问语句时的屏幕截图:
它不会移动到下一行.没有其他代码行突出显示黄色,没有超时,没有.
这听起来像是一个僵局.由于这是一个UI应用程序,进一步检查您调用堆栈任何阻塞调用像Wait(),Result或GetAwaiter().GetResult().如果从UI线程调用,这些可能会死锁.
正确的解决方案是将它们改为await; 换句话说,用async所有的方式.
| 归档时间: |
|
| 查看次数: |
226 次 |
| 最近记录: |