我想从我的应用程序发送短信。当我向特定 URL 发送获取请求时,将发送 SMS。我的所有方法都是异步的,但是当我实例化一个 HttpClient
并想使用 response.Content.ReadAsStringAsync()
时,我删除了 await
。
我不想等待此方法的响应,只想向该 URL 发送请求。现在你能告诉我这是一个好的解决方案吗?
这是我的示例代码:
public async Task<bool> SendMessage(string number, string body)
{
var from = _config["SMSSenderSettings:FromNumber"];
var username = _config["SMSSenderSettings:PanelUserName"];
var password = _config["SMSSenderSettings:PanelPassword"];
using (var client = new HttpClient())
{
try
{
var response = await client.GetAsync($"{BaseUrl}/send.php?method=sendsms&format=json&from={from}" +
$"&to={number}&text={body}&type=0&username={username}&password={password}");
response.EnsureSuccessStatusCode(); // Throw exception if call is not successful
response.Content.ReadAsStringAsync();
return true;
}
catch (HttpRequestException)
{
return false;
}
}
}
我从 response.Content.ReadAsStringAsync();
中删除了 await
,然后收到警告。
最佳答案
如果你不想等待你的任务,你可以删除不需要的返回类型
public async Task SendMessage(string number, string body)
{
var from = _config["SMSSenderSettings:FromNumber"];
var username = _config["SMSSenderSettings:PanelUserName"];
var password = _config["SMSSenderSettings:PanelPassword"];
using (var client = new HttpClient())
{
try
{
var response = await client.GetAsync($"{BaseUrl}/send.php?method=sendsms&format=json&from={from}" +
$"&to={number}&text={body}&type=0&username={username}&password={password}");
response.EnsureSuccessStatusCode(); // Throw exception if call is not successful
await response.Content.ReadAsStringAsync();
}
catch (HttpRequestException)
{
}
}
}
然后你可以从另一个方法调用SendMessage
,比如-
await SendMessage().ConfigureAwait(false);
注意:不推荐这样做,因为您不知道您的任务是否成功完成。
还有其他方法可以实现您想要的。你可能会读到其中的一些-
How to run async task without need to await for result in current function/thread?
关于c# - 当我不需要响应时使用不等待的异步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46021610/