Anisuzzaman Sumon Ответов: 1

Просто дайте мне знать, выполняется ли следующий код асинхронно ?


Уважаемые Эксперты,
Просто дайте мне знать, выполняется ли следующий код асинхронно ?
Мой код показан ниже
public class CompanyController : Controller
   {
public delegate void CompanyAuditRecordKeeper(CompanyModel company, string operationType);
    public ActionResult Create(CompanyModel oCompany)
        {
            //some code


            //I Used below code for asynchoronus call AddCompanyAuditRecords
           //some code
            CompanyAuditRecordKeeper auditkeeper = new CompanyAuditRecordKeeper(AddCompanyAuditRecords);
            auditkeeper.BeginInvoke(oCompany, "I", null, null);

            return Json("", JsonRequestBehavior.AllowGet);
        }
         public void AddCompanyAuditRecords(CompanyModel company, string operationType)
        {
         //  some code goes here

        }
  }


Мой вопрос в том, будет ли 'AddCompanyAuditRecords- функция будет выполняться асинхронно?

Хотя я читал в MSDN, что он будет выполняться асинхронно.По следующей ссылке
https://msdn.microsoft.com/en-us/library/2e08f6yc(v=против 110). aspx

Мое замешательство возникает из-за того, что эксперт сказал мне, что он не будет выполняться асинхронно, пожалуйста, дайте мне знать?

Что я уже пробовал:

Мой вопрос в том, будет ли 'AddCompanyAuditRecords- функция будет выполняться асинхронно?

1 Ответов

Рейтинг:
4

OriginalGriff

Короткий ответ - "может быть".
В официальной документации говорится:

Executes the specified delegate asynchronously with the specified arguments
что довольно ясно!
Но... Далее он говорит:
on the thread that the control's underlying handle was created on.
Это означает, что он действительно выполняется асинхронно, но только в том случае, если код, на котором он выполняется, не является потоком пользовательского интерфейса.
Так может быть".
Зависит от того, как именно этот код работает в более широком контексте.


Anisuzzaman Sumon

В функции 'AddCompanyAuditRecords' я просто вставляю значения в таблицу на сервере mssql
не более того.Если да, то не могли бы вы сказать мне, какой поток он выполняет?

OriginalGriff

- Мы не знаем.
Все зависит от остальной части вашего кода: если вы вызываете этот метод из обработчика нажатия кнопки или аналогичного ему, то он почти наверняка находится в потоке пользовательского интерфейса, поэтому вызов ничего не даст. Так что "нет".
Если ваш код уже использует потоковую обработку и вызывающий метод находится в потоке, не относящемся к пользовательскому интерфейсу, то это "да".
Но у нас нет доступа к вашему коду, поэтому мы не можем сказать.
Что приводит нас прямо к короткому ответу:"может быть".

Anisuzzaman Sumon

Спасибо