- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有一个控制台应用程序,用户输入一个字符串(一个数字,例如“1”),我根据输入的数字发出GET请求,并返回GET的字符串结果。
我想异步执行,因为一般来说,所有 I/O 操作都应该是异步的,所以我基本上想执行 GET,等待结果,然后返回字符串。
我的代码:
public async Task<string> getClassName()
{
Task<string> myTask = getClassNameFromClassNamer();
// Do something here
string page = await myTask;
return page;
}
public async Task<string> getClassNameFromClassNamer() /
{
string url = "...";
using (var client = new HttpClient())
{
return await client.GetStringAsync(url);
}
}
现在,GetStringAsync 永远不会返回,cmd 窗口只会关闭。
我还尝试了 ConfigureAwait(continueOnCapturedContext: false);
,但没有用。
当我尝试使用
result = httpClient.GetStringAsync("...").Result;
它起作用了,但我感觉它不是真正异步的..
我在 .NET 4.5 中工作
编辑:
调用方法:
public async Task execFeature()
{
string response = await webApi.getClassName();
IResult result = new TextResult(response);
result.display();
}
和:
public async Task startService()
{
....
await feature.execFeature();
}
在 Program.cs 中:
featureService.startService();
所以,我有两个问题:
对服务器执行异步 GET 的正确方法是什么?我想做 GET,获取字符串结果并返回字符串。
据我所知,每个 Web 请求都应该异步完成,因为我们希望应用程序中的其他代码(UI、逻辑)继续运行。尽管现在,我没有任何其他操作正在运行或其他 UI 保持响应(控制台应用程序),我基本上只是在等待服务器的响应,我觉得它很好练习异步执行请求。这听起来正确吗?
谢谢!
最佳答案
What is the proper way of doing an async GET to a server? I want to do the GET, get the string result and return the string.
你做得对。
要解决应用程序退出的问题,您必须像这样在 main
方法中同步等待顶级任务:
featureService.startService().Wait();
看看this reference .
I feel like its good practice to do the requests in async. Does that sound correct?
不是真的。在两种情况下异步执行 IO 调用是好的:
关于c# - GetStringAsync 从不返回,执行异步 GET 的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36925852/
关闭。这个问题需要details or clarity .它目前不接受答案。 想改进这个问题吗? 通过 editing this post 添加细节并澄清问题. 关闭 6 年前。 Improve t
notificationCenterPublisher = NotificationCenter.default .publisher(for: .NSManagedObjec
我有以下 Rust 代码: #[inline(never)] fn x() -> i32 { 21 } pub fn main() -> i32 { x() } 如果没有优化 (-C
notificationCenterPublisher = NotificationCenter.default .publisher(for: .NSManagedObjec
我有以下 Rust 代码: #[inline(never)] fn x() -> i32 { 21 } pub fn main() -> i32 { x() } 如果没有优化 (-C
假设我的 ASPX 页面没有内联 C# 代码块。 所以,我可以安全地设置 ...在我的 web.config 文件中,不用担心编译错误。 就性能而言,使用以下设置是否会有任何损失? 即“自动”检测
应用程序.js var win1 = Titanium.UI.createWindow({ title:'Tab 1', backgroundColor: 'black', l
基本上,我正在为实现多级优先级队列的 xv6 内核实现一个调度程序。我有一个严重的问题,我不明白,我类(class)的助教不明白,我已经错过了这个项目的最后期限,所以现在帮助我不会给我任何加分 - 但
我想避免 git 自动 merge 我的 composer.json。这样我就可以在 develop 分支中有一个使用 dev-develop 包的 composer.json,而 master 中的
当比较两种不同的算法实现时(因此,不关心它们的绝对性能,而只关心相对性能)我是否最好强制 Java 只运行解释代码? 也就是说,打开 -Xint 标志会更好吗? 最佳答案 我不认为禁用 JIT 会更好
class A{ const size_t number; public: A(size_t number): number(number) {} void f(){
问题 寻找在以下之间切换的方法: 总是 从不 仅在静默模式下 仅当不处于静默模式时 这些选项在手机上的路径---菜单>>设置>>声音>>振动---找到。 通过手机导航很容易更改(顺便说一句,我的手机是
如何设置电源设置关闭:从不(关闭显示器=从不,让计算机进入休眠状态=从不),通过c#代码 最佳答案 这个问题中给出的链接可以告诉你一个方法。 Programmatically change Windo
我是一名优秀的程序员,十分优秀!