我是 C# s await/async 的新手,目前正在玩一下 .
在我的场景中,我有一个简单的客户端对象,它具有 WebRequest 属性 . 客户端应定期发送 WebRequest RequestStream 上的活动消息 . 这是client-object的构造函数:
public Client()
{
_webRequest = WebRequest.Create("some url");
_webRequest.Method = "POST";
IsRunning = true;
// --> how to start the 'async' method (see below)
}
和async alive-sender方法
private async void SendAliveMessageAsync()
{
const string keepAliveMessage = "{\"message\": {\"type\": \"keepalive\"}}";
var seconds = 0;
while (IsRunning)
{
if (seconds % 10 == 0)
{
await new StreamWriter(_webRequest.GetRequestStream()).WriteLineAsync(keepAliveMessage);
}
await Task.Delay(1000);
seconds++;
}
}
该方法应该如何开始?
new Thread(SendAliveMessageAsync).Start();
要么
Task.Run(SendAliveMessageAsync); //将返回类型更改为Task
要么
await SendAliveMessageAsync(); //失败,因为构造函数不是异步的
我的问题更多是关于我个人对_2680320的理解,我想在某些方面可能是错的 .
第三种选择是投掷
The 'await' operator can only be used in a method or lambda marked with the 'async' modifier