Я знаю, что этот вопрос задавали раньше, но я ищу способ:
- упростить создание безопасного кода с поперечной резьбой.
- повторно использовать этот код в любой ситуации (без ссылок на Windows Forms).
Вот что я до сих пор, но хочу удалить ссылки Windows Forms. Любые идеи?
public delegate void SafeInvokeDelegate(System.Action action);
public class SafeInvoke
{
private readonly System.Windows.Forms.Control _threadControl;
public SafeInvoke()
{
_threadControl = new System.Windows.Forms.Control();
}
public void Invoke(System.Action action)
{
if (_threadControl.InvokeRequired)
_threadControl.Invoke(new SafeInvokeDelegate(Invoke), new object[] {action});
else if (action != null) action();
}
}
Вышеуказанный класс может быть использован следующим образом:
SafeInvoke _safeInvoker = new SafeInvoke();
void SafeClearItems()
{
_safeInvoker.Invoke(delegate
{
listView1.Items.Clear();
});
}
Как удалить System.Windows.Forms.Control в классе SafeInvoke, но сохранить те же функции?