как мне разрешить UIthread выполнить команду, когда я в каком-то потоке
приведенный ниже код вызывается потоком, но строка, которую я хочу запустить в UIthread .. не работает, если я назвал это так ..
форма немного запаздывает, и вентилятор процесса становится быстрым, как будто он находится в бесконечном цикле ... тогда он выдает мне ошибку "stackoverflowexception"
мое приложение является файловым менеджером .. (копировать, вырезать, вставить, новую папку .. и т. Д.) .. и dirRecursive (путь к строке) .. показывает мне файлы и папки в виде списка со значками , поэтому каждый раз, когда я делаю что-то вроде (новая папка или вставка), мне нужно вызывать dirRecursive , чтобы обновить listView
примечание:
работает отлично, прежде чем я попытался выполнить
PasteFromCopy с потоком ..
он отлично работает, когда я удаляю строку
dirRecursive (..) из метода вставки ... но мне нужно обновить
listview автоматически после того, как вставка сделана .. вот почему мне нужно вызвать его из
PasteFromCopy , но используя UIThread
если я использовал UIThread для вставки, то форма будет отставать при копировании файла .. вы знаете
помогите пожалуйста :) заранее спасибо
private void PasteFromCopy(object dest)
{
foreach (ListViewItem item in copiedItems)
{
string _dest = (string)dest;
string itemName = item.Text;
string itemPath = item.ToolTipText;
string itemDest = Path.Combine(_dest, itemName);
if (IsFolder(itemPath))
{
if (Directory.Exists(itemDest))
{
if (MessageBox.Show(itemName + " is already exists .. Do you want to overwrite it and its all contents?"
, "Overwrite", MessageBoxButtons.OKCancel, MessageBoxIcon.Asterisk) == DialogResult.OK)
{
CopyDirectory(itemPath, itemDest, true);
}
}
else
CopyDirectory(itemPath, itemDest, false);
}
else
{
if (File.Exists(itemDest))
{
if (MessageBox.Show(itemName + " is already exists .. Do you want to overwrite it?"
, "Overwrite", MessageBoxButtons.OKCancel, MessageBoxIcon.Asterisk) == DialogResult.OK)
{
InfoLabel("Copying " + itemName + " ...");
File.Copy(itemPath, itemDest, true);
}
}
else
{
InfoLabel("Copying " + itemName + " ...");
File.Copy(itemPath, itemDest, false);
}
}
InfoLabel("Paste done.");
dirRecursive(currAddress); // here is line i need to execute from UIthread
}
}