【发布时间】:2019-08-31 05:19:42
【问题描述】:
有人要求一个非常清晰的帖子。我正在尝试从我的主线程上的 Update 函数更新我的 UI。我试图通过使用委托来实现它,但它没有用。我的订阅者有时从辅助线程调用,有时从主线程调用,我该如何解决这个问题?我的更新功能中的内容会导致很多问题。
private void Update()
{
if (update != null)
{
lock (update)
{
update.Invoke(oldState, state);
update = null;
}
}
}
private void LoginSubscirber(AppState oldState, AppState state)
{
lock (state)
{
if (oldState.loginState != state.loginState)
{
if (state.loginState == loginStateEnum.loadingLogin)
{
update = LoadingLoginCallback;
}
else if (state.loginState == loginStateEnum.successLogin)
{
update = LoginSuccescCallback;
}
}
}
}
LoginSubscrirber(忽略我的拼写错误)有时用Task.Factory.StartNew() 调用
【问题讨论】:
-
有成千上万的“如何从 {your_favorite_framework} 中的其他线程更新 UI”...例如 WPF 的stackoverflow.com/questions/2367718/…...您的问题可能与其中一些重复...
标签: c# multithreading thread-safety task