Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何返回任务?_C#_Asp.net Mvc - Fatal编程技术网

C# 如何返回任务?

C# 如何返回任务?,c#,asp.net-mvc,C#,Asp.net Mvc,我正在学习Websocket,从以下任务中如何返回 public override Task ReceiveAsync(WebSocket socket, WebSocketReceiveResult result, byte[] buffer) { string message = "Replied by: " + cn.GetId(socket); Task.Run(async () => {

我正在学习Websocket,从以下任务中如何返回

public override Task ReceiveAsync(WebSocket socket, WebSocketReceiveResult result, byte[] buffer)
    {
        string message = "Replied by: " + cn.GetId(socket);

        Task.Run(async () =>
        {
            await socket.SendAsync(buffer: new ArraySegment<byte>(array: Encoding.ASCII.GetBytes(message),
                                                                 offset: 0,
                                                                 count: message.Length),
                                  messageType: WebSocketMessageType.Text,
                                  endOfMessage: true,
                                  cancellationToken: CancellationToken.None);


        });
    }
public override Task ReceiveAsync(WebSocket套接字、WebSocketReceiveResult结果、字节[]缓冲区)
{
string message=“回复人:”+cn.GetId(socket);
Task.Run(异步()=>
{
wait socket.SendAsync(缓冲区:new ArraySegment(数组:Encoding.ASCII.GetBytes(消息)),
偏移量:0,
计数:message.Length),
messageType:WebSocketMessageType.Text,
endOfMessage:对,
cancellationToken:cancellationToken.None);
});
}
我得到:严重性代码描述项目文件行抑制状态 错误CS0161“NotificationsMessageHandler.ReceiveAsync(WebSocket,WebSocketReceiveResult,字节[]”):并非所有代码路径都返回值


我不知道如何返回任务。

您不需要任务。请显式运行,而不是

Task.Run(async () =>
    {
        await socket.SendAsync(buffer: new ArraySegment<byte>(array: Encoding.ASCII.GetBytes(message),
                                                             offset: 0,
                                                             count: message.Length),
                              messageType: WebSocketMessageType.Text,
                              endOfMessage: true,
                              cancellationToken: CancellationToken.None);


    });
Task.Run(异步()=>
{
wait socket.SendAsync(缓冲区:new ArraySegment(数组:Encoding.ASCII.GetBytes(消息)),
偏移量:0,
计数:message.Length),
messageType:WebSocketMessageType.Text,
endOfMessage:对,
cancellationToken:cancellationToken.None);
});
你可以用

await socket.SendAsync(buffer: new ArraySegment<byte>(array: Encoding.ASCII.GetBytes(message),
                                                         offset: 0,
                                                         count: message.Length),
                          messageType: WebSocketMessageType.Text,
                          endOfMessage: true,
                          cancellationToken: CancellationToken.None);
wait socket.SendAsync(缓冲区:new ArraySegment(数组:Encoding.ASCII.GetBytes(消息)),
偏移量:0,
计数:message.Length),
messageType:WebSocketMessageType.Text,
endOfMessage:对,
cancellationToken:cancellationToken.None);

在这里,await将返回socket.SendAsync的结果,我假设它是异步的

您不需要任务

Task.Run(async () =>
    {
        await socket.SendAsync(buffer: new ArraySegment<byte>(array: Encoding.ASCII.GetBytes(message),
                                                             offset: 0,
                                                             count: message.Length),
                              messageType: WebSocketMessageType.Text,
                              endOfMessage: true,
                              cancellationToken: CancellationToken.None);


    });
Task.Run(异步()=>
{
wait socket.SendAsync(缓冲区:new ArraySegment(数组:Encoding.ASCII.GetBytes(消息)),
偏移量:0,
计数:message.Length),
messageType:WebSocketMessageType.Text,
endOfMessage:对,
cancellationToken:cancellationToken.None);
});
你可以用

await socket.SendAsync(buffer: new ArraySegment<byte>(array: Encoding.ASCII.GetBytes(message),
                                                         offset: 0,
                                                         count: message.Length),
                          messageType: WebSocketMessageType.Text,
                          endOfMessage: true,
                          cancellationToken: CancellationToken.None);
wait socket.SendAsync(缓冲区:new ArraySegment(数组:Encoding.ASCII.GetBytes(消息)),
偏移量:0,
计数:message.Length),
messageType:WebSocketMessageType.Text,
endOfMessage:对,
cancellationToken:cancellationToken.None);

在这里,wait将返回socket.sendaync的结果,我假设它是异步的

我得到了错误:NotificationsMessageHandler.ReceiveAsync(WebSocket,WebSocketReceiveResult,字节[])“:并非所有代码路径都返回+1值:您还应该提到,不使用
Task.Run
的行为不同,因为它
Task.Run
将工作安排在另一个线程上运行。在问题的上下文中,绝对不需要
任务。运行
@DevDon,使用return-await您不能使用
return-await
,因为该方法不是
async
@John,从方法名sendsync判断,我假设它是异步的,而ReceiveAsync应该是异步的,感谢您的提醒。我收到了错误:NotificationsMessageHandler.ReceiveAsync(WebSocket,WebSocketReceiveResult,byte[]):并非所有代码路径都返回值+1:您还应该提到,不使用
任务。Run
有不同的行为,因为它
任务。Run
将工作安排在另一个线程上运行。在这个问题的上下文中,绝对没有必要执行
任务。运行
@DevDon,使用return-await您不能使用
return-await
,因为该方法不是
async
@John,从方法名sendsync判断,我假设它是异步的,ReceiveAsync应该是异步的,谢谢您的提醒。