В любом случае это не будет делать именно то, что вы хотите.
Попытка вставить это в отдельный поток, скорее всего, вы (вероятно, всегда) вернете string.Empty
в результате этого метода.
Причина этого в том, что ваша строка return paths;
вернется намного раньше, чем Makezipfile
сможет успешно выполнить.
Если вы хотите, чтобы это был асинхронный метод, вам нужно переработать его, чтобы он стал асинхронным. Существует множество вариантов, включая APM и EAP для асинхронности в .NET 3.5 и более ранних версиях. В .NET 4 лучшим вариантом здесь было бы превратить это в метод, который возвращает Task<string>
:
public static Task<string> MakeZipAsync(string [] files,bool IsOriginal)
{
return Task.Factory.StartNew( () =>
{
return Makezipfile(files, IsOriginal);
});
}
Вы бы тогда использовали это как:
var zipTask = MakeZipAsync(files, true);
// Do other work...
// Later, when you need the results, you can block and retrieve them:
var paths = zipTask.Result;