Как избежать, чтобы сеть остановилась в GetFileAttributes?

Мне кажется, что самый простой ответ должен использовать эти sprintf функция:

sprintf(outString,"%s%d",name,age);
12
задан Eric Grange 6 December 2016 в 08:10
поделиться

2 ответа

На самом деле проблема не в GetFileAttributes. Обычно он использует только один вызов основного драйвера файловой системы. Это тот ввод-вывод, который тормозит.

Тем не менее, решение, вероятно, простое. Вызовите CancelSynchronousIo () через одну секунду (для этого, очевидно, требуется второй поток, поскольку ваш первый застрял внутри GetFileAttributes).

7
ответ дан 2 December 2019 в 22:05
поделиться

Одна замечательная вещь о делегатах - вы всегда можете BeginInvoke и EndInvoke их. Просто убедитесь, что вызываемый метод не генерирует исключение, поскольку [я считаю] он вызовет сбой (необработанное исключение).

AttributeType attributes = default(AttributeType);

Action<string> helper =
    (path) =>
    {
        try
        {
            // GetFileAttributes
            attributes = result;
        }
        catch
        {
        }
    };
IAsyncResult asyncResult = helper.BeginInvoke();
// whatever
helper.EndInvoke();
// at this point, the attributes local variable has a valid value.
4
ответ дан 2 December 2019 в 22:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: