Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Помогите перевести Asynchronous Programming Model через Factory.FromAsync / 7 сообщений из 7, страница 1 из 1
14.02.2014, 18:23
    #38561421
MsSql_Study
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите перевести Asynchronous Programming Model через Factory.FromAsync
Привет !

Использую эту статью
http://blogs.msdn.com/b/pfxteam/archive/2009/06/09/9716439.aspx

Голова идет кругом от этого:
Код: c#
1.
2.
3.
4.
5.
6.
public Task<TResult> FromAsync<TArg1, TArg2, TArg3>( 
    Func<TArg1, TArg2, TArg3, AsyncCallback, 
        object, IAsyncResult> beginMethod, 
    Func<IAsyncResult, TResult> endMethod, 
    TArg1 arg1, TArg2 arg2, TArg3 arg3, 
    object state);



Хотя в целом то понятно. Но вот код написать все же не могу :)

Вот моя тестовая задачка. Помогите ее переделать с помощью Factory.FromAsync.

Имеется некий код, следующий принципу APM

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
TestClient proxy = new TestClient();
proxy.BeginInvokeOperation(Guid.NewGuid().ToString(), AsyncInvokeOperationEnd, proxy);
Console.WriteLine("Client:  Operation Invoked");
Console.ReadLine();

private static void AsyncInvokeOperationEnd(IAsyncResult iAsyncResult)
{
  TestClient proxy = (TestClient)iAsyncResult.AsyncState;
  string StrResult = proxy.EndInvokeOperation(iAsyncResult);
  Console.WriteLine(StrResult);
  Console.ReadLine();
}



В итоге, должно выйти что-то типа этого:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Task task = ...FromAsync...

try
{
  task.Result;
}
catch
{

}
...
Рейтинг: 0 / 0
14.02.2014, 21:54
    #38561566
MsSql_Study
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите перевести Asynchronous Programming Model через Factory.FromAsync
Мне бы увидеть один примерчик, а дальше уже сам пойму.
Нужно переделать кучу таких вызовов в программе )
...
Рейтинг: 0 / 0
14.02.2014, 22:20
    #38561584
Lelouch
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите перевести Asynchronous Programming Model через Factory.FromAsync
MsSql_Study,
как то так:

Код: c#
1.
var task = Task.FromAsync(proxy.BeginInvokeOperation, AsyncInvokeOperationEnd, Guid.NewGuid().ToString(), proxy);
...
Рейтинг: 0 / 0
14.02.2014, 23:01
    #38561613
MsSql_Study
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите перевести Asynchronous Programming Model через Factory.FromAsync
Lelouch,

Спасибо большое.

А подскажите пожалуйста. Как теперь сделать, чтобы Task возвращал String ?

Пробовал разные варианты, но каждый раз ошибка одна и та же:
"string Client_Console.Program.AsyncInvokeOperationEnd(System.IAsyncResult)" имеет неправильный возвращаемый тип



Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
private static string AsyncInvokeOperationEnd(IAsyncResult iAsyncResult)

и

private static Task AsyncInvokeOperationEnd(IAsyncResult iAsyncResult)

и 

Task task = Task.Factory.FromAsync<string>(proxy.BeginInvokeOperation, AsyncInvokeOperationEnd, Guid.NewGuid().ToString(), proxy);



Т.е. все работает, если ничего возвращать не нужно. А как переписать, если хочется, чтобы асинхронная функция возвращала ответ ?
...
Рейтинг: 0 / 0
14.02.2014, 23:42
    #38561624
Lelouch
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите перевести Asynchronous Programming Model через Factory.FromAsync
MsSql_Study,

вот так:

Код: c#
1.
var task = Task.FromAsync(proxy.BeginInvokeOperation, proxy.EndInvokeOperation, Guid.NewGuid().ToString(), proxy);
...
Рейтинг: 0 / 0
14.02.2014, 23:51
    #38561628
Lelouch
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите перевести Asynchronous Programming Model через Factory.FromAsync
Извиняюсь, вот так:

Код: c#
1.
Task<string>.Factory.FromAsync(proxy.BeginInvokeOperation, proxy.EndInvokeOperation, Guid.NewGuid().ToString(), proxy);
...
Рейтинг: 0 / 0
19.02.2014, 19:06
    #38566696
MsSql_Study
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите перевести Asynchronous Programming Model через Factory.FromAsync
Lelouch,

Спасибо за ответ !
...
Рейтинг: 0 / 0
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Помогите перевести Asynchronous Programming Model через Factory.FromAsync / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]