Я использую некоторый метод операции invoke в wcf ria service.like следующего метода:
[Invoke]
public int GetCountOfAccountsByRequestId(long requestId)
{
return ObjectContext.Accounts.Count(a => a.RequestId ==requestId);
}
Когда я хочу получить данные из этого метода, я использую следующий код для запуска и получения значения из метода invoke:
int countOfAccounts = 0;
InvokeOperation<int> invokeOperation = context.GetCountOfAccountsByRequestId(selectedRequest.RequestId);
invokeOperation.Completed += (s, args) =>
{
if (invokeOperation.HasError)
{
var messageWindow = new MessageWindow(invokeOperation.Error.Message);
messageWindow.Show();
invokeOperation.MarkErrorAsHandled();
}
else
{
countOfAccounts = invokeOperation.Value;
if (countOfAccounts == 0)
{
// do some thing
}
}
};
Но этот метод требует большого количества кода для запуска метода invoke и получения значения из него. Также как часть этого кода выполняется асинхронно. Аналогично, некоторые методы должны быть реализованы в тандеме. И возвратЗначение каждого метода связано с предыдущими методами.
Как я могу реализовать эти действия ?!Как я могу написать лучше, чем это без проблем?