Как получить доступ к методу класса внутри задачи? - PullRequest
0 голосов
/ 29 октября 2018

Предположим, у меня есть класс с именем Foo, который имеет следующий дизайн:

public class Foo
{
    public async Task StartAsync()
    {
         await some method..
    }
}

Я хочу создать массив, содержащий разные Task<Foo>, поэтому я объявил следующий массив:

Task<Foo>[] tasks = new Task<Foo>[10];

и затем я назначил индекс массива для создания Task<Foo> следующим образом:

 tasks[1] = new Task<Foo>();

Теперь я хочу получить доступ к методу StartAsync(), но когда я пишу следующее:

tasks[1].

У меня есть только метод Start(), который является методом по умолчанию для запуска задачи. Как я могу вместо этого получить доступ к Foo методам класса?

Ответы [ 2 ]

0 голосов
/ 29 октября 2018

Я думаю, вам нужен массив Foo s вместо Task<Foo> s

Foo[] foos = new Foo[10];

Тогда вы можете сделать это:

foos[1] = new Foo();
await foos[1].StartAsync();
0 голосов
/ 29 октября 2018

Ваш объект tasks [1] на самом деле является типом Task, а не Foo, чтобы получить доступ к Foo, вам нужно либо дождаться его, либо использовать свойство результата задачи

var foo = await tasks[1];
foo.StartAsync()

//Or

tasks[1].Result.StartAsync() //be careful with deadlock when you using Result. 
...