1

私は現在、c#5 の新しいキーワードが例でどのように機能しているかを理解しようとしています。ソケット接続を介してメッセージを送信し、リスナーで応答をキャッチしたい。私が本当に立ち往生しているのは、メソッドを待つことができないという点です。ここに例を示します:

    private async void SubmitMessage(string strMessage)
    {
        try
        {
            using (StreamSocket objSocket = new StreamSocket())
            {
                IAsyncAction objAction = await objSocket.ConnectAsync(new HostName(TargetHostname), TargetPortservice);
                objAction.Completed = delegate(IAsyncAction asyncAction, AsyncStatus asyncStatus)
                {
                    BindListener(objSocket.Information.LocalPort, objSocket, strMessage);
                };
            }
        }
        catch (Exception objException)
        {
            Debug.WriteLine(objException.Message);
            throw;
        }
    }

これを待つ方法を知っている人はいますか?「await」を削除すると、構文は正しいです。助けてくれてありがとう。

4

2 に答える 2

2

を使用するときは、まったくawaitいじる必要がないIAsyncActionため、次のようなものが機能するはずです。

private async Task SubmitMessage(string strMessage)
{
    try
    {
        using (StreamSocket objSocket = new StreamSocket())
        {
            await objSocket.ConnectAsync(new HostName(TargetHostname), TargetPortservice);
            BindListener(objSocket.Information.LocalPort, objSocket, strMessage);
        }
    }
    catch (Exception objException)
    {
        Debug.WriteLine(objException.Message);
        throw;
    }
}
于 2013-01-20T01:30:05.023 に答える
0

よくわからないけどこれでいいの?

IAsyncAction objAction = 
 objSocket.ConnectAsync(new HostName(TargetHostname), TargetPortservice);
await objAction;
//...
于 2013-01-20T01:18:05.330 に答える