Как установить обработчик для WebRequest.getResponseasync в Ironruby?

StackOverflow https://stackoverflow.com//questions/25013962

Вопрос

Я пытаюсь:

request = WebRequest.Create( uri )
responseTask = request.GetResponseAsync
action = Action.new { process_request( sender, e ) }
task = Task.new( action )
responseTask.Wait( TimeSpan.new( -1 ) )
responseTask.ContinueWith( task )
.

Но есть следующие ошибки:

can't convert System::Threading::Tasks::Task into System::Action[System::Threading::Tasks::Task] (TypeError)  
.

<Сильные> UPD

на

responseTask = request.GetResponseAsync  
action = Action[Task].new { process_request( sender, e ) }  
responseTask.Wait( TimeSpan.new( -1 ) )  
responseTask.ContinueWith( action )  
.

Я получаю эту ошибку:

Found multiple methods for 'ContinueWith': ContinueWith(System::Action[System::Threading::Tasks::Task]), ContinueWith(System::Action[System::Threading::Tasks::Task[System::Net::WebResponse]]) (System::Reflection::AmbiguousMatchException)
.

Это было полезно?

Решение

продолжение принимает

Action<Task> 
.

и есть другие перегрузки, но не для задачи.

Например:

action = Action.new {Console.WriteLine("action")}
task = Task.new( action )
action2 = Action[Task].new{Console.WriteLine("action2")}
task.ContinueWith(action2)
task.Start()
#prints "action" then "action2".
.


Ironruby может позволить вам пропустить специальности универсальных типов , которая была нерегированной задачей, вот полностью напечатанная версия для вашей проблемы:

 action = Action[Task[WebResponse]].new { process_request( sender, e ) }
.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top