Мне кажется, что самый простой ответ должен использовать эти sprintf
функция:
sprintf(outString,"%s%d",name,age);
На самом деле проблема не в GetFileAttributes. Обычно он использует только один вызов основного драйвера файловой системы. Это тот ввод-вывод, который тормозит.
Тем не менее, решение, вероятно, простое. Вызовите CancelSynchronousIo () через одну секунду (для этого, очевидно, требуется второй поток, поскольку ваш первый застрял внутри GetFileAttributes).
Одна замечательная вещь о делегатах - вы всегда можете 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.