Согласно вашему описанию, я сделал демонстрацию. Асинхронный метод в демонстрации автоматически генерируется на стороне клиента в соответствии с SendData, то есть на стороне сервера нет метода SendDataAsyn c, а только на стороне сервера имеет SendData.
public void SendData(SampleData data)
{
Console.WriteLine(data.TStamp);
Console.WriteLine(data.value);
Console.WriteLine("success");
}
Это метод SendData на стороне сервера.
public System.Threading.Tasks.Task SendDataAsync(Client_SOAP.ServiceReference1.SampleData data) {
return base.Channel.SendDataAsync(data);
}
Это асинхронный метод, автоматически сгенерированный на стороне клиента.
ServiceReference1.Service1Client service1Client = new Service1Client();
SampleData sampleData = new SampleData();
sampleData.value = 10;
sampleData.TStamp = DateTime.Now;
service1Client.SendDataAsync(sampleData);
service1Client.Close();
Console.ReadLine();
Это асинхронные методы, вызывающие на стороне клиента.
Это результат выполнения на стороне сервера после стороны клиента вызовы.
В другом случае, если ваш асинхронный метод реализуется на стороне сервера, сервер может реализовать асинхронную операцию тремя способами: асинхронный шаблон на основе задач, асинхронный шаблон на основе событий, асинхронный шаблон IAsyncResult. Для другой асинхронной модели, используемой на стороне сервера, клиент вызывает по-разному.
Следующие ссылка подробно описывает асинхронный вызов на стороне клиента:
https://docs.microsoft.com/en-us/dotnet/framework/wcf/synchronous-and-asynchronous-operations