C# - openfiledialog окно зависает при выборе файла с устройства Windows Media

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

У меня возникает проблема, когда я выбираю файл на устройстве Windows Media, например iPAD. Поскольку он не использует стандартный путь Windows, он должен сначала скопировать файл во временную папку. Мне даже не нужно кодировать это, он просто автоматически скопирует его в мою временную папку Windows, а затем поместит его в качестве пути к файлу.

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

Есть ли более изящный метод, который я могу использовать, чтобы, если я выбрал файл с устройства Windows Media, я мог получить всплывающее окно или что-то, чтобы сказать, что он копирует файл, а не замораживает пользовательский интерфейс?

1 ответ

Вы должны сделать нить. После создания потока вы должны показать opendialog или использовать действие. Потому что, если вы показываете диалог в основном потоке, он будет содержать основной поток.

 //1. Thread 
Thread openDialogthread = new Thread(Showdialog);
openDialogthread.Start();

void Showdialog()
{ // do popup dialog here }

//2. Action
if(this.invokeRequired)
{
  this.BeginInvoke(new Action(() =>     fileOpendialog.ShowDialog();));
}
Другие вопросы по тегам