Выполнение асинхронных задач в веб-саду

У меня есть эта функция, которая выполняет асинхронную задачу и возвращает результаты

 public bool CheckNetworkDrive(string drive)
 {
    var task = new Task<bool>(() => { return CheckNetworkDriveMethod(drive); });

    task.Start();

    //make async call to check network path to avoid lock in case of not exist 
    if (task.Wait(5000) && task.Result)
        return true; 
    return false;
 }

на локальном хосте все работает нормально, но в webgarden, похоже, не работает, и я не могу понять точную причину, так что вы можете помочь или предложить альтернативу!

PS, метод проверки проверит сетевой путь, если он не отвечает, он заблокирует весь код, поэтому мне нужен метод огня и асинхронного ожидания.


person Ali Alnakeab    schedule 24.03.2014    source источник
comment
Как именно не работает? Что делает это?   -  person svick    schedule 24.03.2014
comment
он просто проверяет каталог на сетевом пути, если он существует, то все в порядке, если сетевой диск по какой-то причине не готов, он будет ждать ответа в течение 5 секунд, а затем предположим, что он не готов!   -  person Ali Alnakeab    schedule 24.03.2014
comment
Это похоже на проблему в методе CheckNetworkDriveMethod(), не связанную с опубликованным вами кодом.   -  person svick    schedule 24.03.2014
comment
нет, если я уберу параллелизм и вызову метод напрямую, он вернет true! и даже с задачей в одиночном процессе все нормально!   -  person Ali Alnakeab    schedule 24.03.2014


Ответы (1)


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

Я нашел это, что помогло

Как настроить пользователя идентификатор для задач при вызове Task.WaitAll()

person Ali Alnakeab    schedule 24.03.2014