Можем ли мы вызвать асинхронный метод из конструктора? [дубликат]C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Можем ли мы вызвать асинхронный метод из конструктора? [дубликат]

Сообщение Anonymous »

Мне нужно вызвать сторонний асинхронный метод из приложения MVC. Имя этого асинхронного метода — ForceClient.QueryAsync. Это из проекта с открытым исходным кодом: https://github.com/developerforce/Force ... t-for-NET/.

Ниже работает нормально, модель .Opportunity содержит ожидаемую информацию, когда процесс находится на этапе просмотра MVC:

Код: Выделить всё

public async Task MyController(string Id) {
. . . .
MyModel model = new MyModel();
var client = new ForceClient(instanceUrl, accessToken, apiVersion);
var qry = await client.QueryAsync(
"SELECT Name, StageName FROM Opportunity where  Id='" + Id + "'");
model.Opportunity = qry.Records.FirstOrDefault();
. . . .
return View(viewName, myModel);
}
Но ниже не работает. Model.Opportunity имеет значение null, когда процесс находится на стадии просмотра. Я провел некоторую отладку и увидел, что порядок действий выглядит следующим образом:

1) Шаг 1

2) Шаг 2< /p>

3) На этапе просмотра. На данный момент модель model.Opportunity равна нулю, и мне нужно ее заполнить.

4) Шаг 3.

Код: Выделить всё

public async Task MyController(string Id) {
. . . .
MyModel myModel = await Task.Run(() =>
{
var result = new MyModel(Id);
return result;

});   // =====> Step 1
. . . .
return View(viewName, myInfoView);
}

public class MyModel
{
public SFOpportunity Opportunity { get; set; }
public MyModel(string id)
{
setOpportunityAsync(id);
}

private async void setOpportunityAsync(string id)
{
. . .
var client = new ForceClient(instanceUrl, accessToken, apiVersion);
var qry = await client.QueryAsync(
"SELECT Name, StageName FROM Opportunity where  Id='" + id + "'");  // ======>  Step2
Opportunity = qry.Records.FirstOrDefault();  // =====> step3
}
Итак, мой вопрос в том, что мне нужно сделать, чтобы он выполнил шаги в следующей последовательности:
1) Шаг1
2) Шаг 2

3) Шаг 3

4) В Посмотреть сцену. На этом этапе модель model.Opportunity должна быть заполнена.

Подробнее здесь: https://stackoverflow.com/questions/562 ... onstructor
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Как вызвать асинхронный метод из синхронного метода в С#?
    Anonymous » » в форуме C#
    0 Ответы
    23 Просмотры
    Последнее сообщение Anonymous
  • Как вызвать асинхронный метод из синхронного метода в С#?
    Anonymous » » в форуме C#
    0 Ответы
    9 Просмотры
    Последнее сообщение Anonymous
  • Как вызвать асинхронный метод из синхронного метода в С#?
    Anonymous » » в форуме C#
    0 Ответы
    9 Просмотры
    Последнее сообщение Anonymous
  • Как безопасно вызвать асинхронный метод в C# без ожидания
    Anonymous » » в форуме C#
    0 Ответы
    12 Просмотры
    Последнее сообщение Anonymous
  • Как безопасно вызвать асинхронный метод в C# без ожидания
    Anonymous » » в форуме C#
    0 Ответы
    15 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C#»