Ух ты!Держитесь подальше от CheckForIllegalCrossThreadClass.Это свойство, хотя Microsoft и сделало его доступным, и я уверен, что есть очень, очень, очень редкое (и я имею в виду редкое ) использование, никогда не трогайте его.Это буквально принесет вред вашему программному обеспечению.
Вы можете использовать простой подход ISyncronizeInvoke для обновления вашего пользовательского интерфейса, , который я также написал в блоге на (очень простой).
/// <summary>
/// Helper class that allows synchronized invoking to be performed in a single line of code.
/// </summary>
internal static class SynchronizedInvoke {
/// <summary>
/// Invokes the specified action on the thread that the specified sync object was created on.
/// </summary>
public static void Invoke(ISynchronizeInvoke sync, Action action) {
if (!sync.InvokeRequired) {
action();
}
else {
object[] args = new object[] { };
sync.Invoke(action, args);
}
}
}
Использование просто.
private void MyThreadWork() {
// Do some work
SynchnronizeInvoke.Invoke(uxProgressBar, () => uxProgressBar.Style = ProgressBarStyles.Blocks);
}