java登录时启动后台异步线程_以线程或任务方式启动异步方法

我是 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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值