У меня есть Net 2.0 код, который использует вебсервис основанный на SoapHttpClientProtocol
Как перенести наследие с # 2 Еар код TPL
public void CommunicateWithWebservice()
{
var success = ws.DoSomething()
if(success)
{
return ws.DoSomething2();
}
return null;
}
Как преобразовать этот код в EAP (https://msdn.microsoft.com/en-us/library/ms228969(v=vs.110).aspx) Паттен, не изменяя его слишком много?
Я планирую преобразовать EAP в Задачу позже (https://msdn.microsoft.com/en-us/library/ee622454(v=vs.110).aspx), поэтому он не будет блокировать поток и отпустить его в пул потоков aspnet. Webservice предоставляет методы, такие как DoSomething_Async()
и событие DoSomething_Completed
. Устаревший код по-прежнему должен использовать синхронный вызов.
Я знаю, что могу преобразовать его непосредственно в Задачу, однако код должен оставаться в NET 2.0. Вот почему я хочу изменить CommunicateWithWebservice
на EAP (CommunicateWithWebservice
, CommunicateWithWebservice_Begin
, CommunicateWithWebservice_Completed
), а затем завернуть в задачу для нового приложения.
У меня DLL Framework 2.0, поэтому источник завершения задачи не поможет. – user2029276
Вы можете использовать сборку 4.6, ссылаться на свою сборку 2.0 и по-прежнему использовать TCS. – Sefe
Да, моя проблема в том, что у меня есть код, который еще не может использовать TCS, и я хочу превратить его в код, который может это сделать. – user2029276