我想从我的应用程序发送短信.当我将get请求发送到特定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;
}
}
}
Run Code Online (Sandbox Code Playgroud)
我离开await了response.Content.ReadAsStringAsync();,我收到了警告.
如果你不想等待你的任务,你可以删除不需要的返回类型
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)
{
}
}
}
Run Code Online (Sandbox Code Playgroud)
然后你可以SendMessage从另一个方法调用,比如 -
await SendMessage().ConfigureAwait(false);
Run Code Online (Sandbox Code Playgroud)
注意:不建议这样做,因为您不知道您的任务是否成功完成。
还有其他方法可以实现您想要的。你可能会读到这些——
如何在不需要等待当前函数/线程中的结果的情况下运行异步任务?
| 归档时间: |
|
| 查看次数: |
6375 次 |
| 最近记录: |