Я пытаюсь выполнить синхронный метод асинхронно, поэтому я могу обновить интерфейс с его прогрессом. Я должен запустить этот же синхронный метод с несколькими различными частями данных, но может быть только один экземпляр этого метода за раз.Асинхронный синхронный метод
Это то, что я пробовал, и это не совсем то, что моя программа выглядит, но я упростил ее, чтобы свести к минимуму путаницу.
class Program
{
static int[] data = new int[10]
{
1, 2, 3, 4, 5, 6, 7, 8, 9, 10
};
static void Main(string[] args)
{
Method(0);
}
static void Method(int parameter)
{
if (parameter < data.Length)
{
Worker worker = new Worker();
worker.OnProgressChange += delegate
{
// Update UI
};
worker.OnWorkComplete += delegate
{
Method(parameter++);
};
worker.DoWork();
}
}
}
class Worker
{
public event EventHandler OnProgressChange;
public event EventHandler OnWorkComplete;
public Worker() { }
public void DoWork() { }
}
Я не уверен, как атаковать это. Пожалуйста, дайте мне знать, если я недостаточно хорошо объясню проблему.
Я не понял ваш вопрос, но я думаю, что ваш ответ иллюстрирует то, чего вы пытаетесь достичь. Вы хотите сделать тяжелую обработку (конвертирование коллекции файлов), которая займет некоторое время. Вы хотите, чтобы поток выполнения вашего приложения поддерживался до завершения обработки файлов, но вы хотите, чтобы Windows реагировала. Это верно? – mbeckish
@mbeckish Я хочу, чтобы поток пользовательского интерфейса был активным и незамерзающим. Имея это в виду, я пытаюсь преобразовать список файлов, но только по одному. Это то, что я пытаюсь сделать. – Minato