用SynchronizationContext解决界面的更新线程数据问题
来源:互联网 发布:cf出现网络出现异常 编辑:程序博客网 时间:2024/06/05 06:13
class MySingleton
{
private System.Timers.Timer m_timer;
int m_ticker = 0;
private MySingleton()
{
m_timer = new System.Timers.Timer();
m_timer.Interval = 20;
m_timer.Elapsed+=new System.Timers.ElapsedEventHandler(m_timer_Elapsed);
m_timer.Start();
}
private static object s_lock = new object();
private static MySingleton s_single = null;
public event Action<int> TickerChanged;
public SynchronizationContext m_sc;
public static MySingleton Singleton
{
get
{
if (null != s_single)
{
return s_single;
}
Monitor.Enter(s_lock);
if (null == s_single)
{
MySingleton tem = new MySingleton();
Interlocked.Exchange(ref s_single, tem);
}
Monitor.Exit(s_lock);
return s_single;
}
}
public void m_timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
int id=Thread.CurrentThread.ManagedThreadId;
if (null == m_sc)
{
TickerChanged(m_ticker++);
}
else
{
m_ticker++;
m_sc.Post(delegate
{
if (null != TickerChanged)
{
TickerChanged(m_ticker++);
}
}, null);
}
}
}
{
private System.Timers.Timer m_timer;
int m_ticker = 0;
private MySingleton()
{
m_timer = new System.Timers.Timer();
m_timer.Interval = 20;
m_timer.Elapsed+=new System.Timers.ElapsedEventHandler(m_timer_Elapsed);
m_timer.Start();
}
private static object s_lock = new object();
private static MySingleton s_single = null;
public event Action<int> TickerChanged;
public SynchronizationContext m_sc;
public static MySingleton Singleton
{
get
{
if (null != s_single)
{
return s_single;
}
Monitor.Enter(s_lock);
if (null == s_single)
{
MySingleton tem = new MySingleton();
Interlocked.Exchange(ref s_single, tem);
}
Monitor.Exit(s_lock);
return s_single;
}
}
public void m_timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
int id=Thread.CurrentThread.ManagedThreadId;
if (null == m_sc)
{
TickerChanged(m_ticker++);
}
else
{
m_ticker++;
m_sc.Post(delegate
{
if (null != TickerChanged)
{
TickerChanged(m_ticker++);
}
}, null);
}
}
}
- 用SynchronizationContext解决界面的更新线程数据问题
- 利用SynchronizationContext解决界面要素的线程同步问题
- 后台线程使用 SynchronizationContext 更新主界面
- 解决ListView1的界面数据与内存不一致问题,将内存数据更新到界面上
- 线程之间的通讯---SynchronizationContext
- 线程之间的通讯---SynchronizationContext
- 线程之间的通讯---SynchronizationContext
- 线程之间的通讯---SynchronizationContext
- 线程之间的通讯---SynchronizationContext
- C#线程UI更新,SynchronizationContext方法
- Winform线程通信(异步更新UI--SynchronizationContext
- android Thread 非线程更新UI界面(handler,runOnUiThread)解决图片加载慢的问题
- 线程之间的通讯---SynchronizationContext Part II
- 线程之间的通讯---SynchronizationContext Part III
- 线程之间的通讯---SynchronizationContext [转]
- 深入线程,实现自定义的SynchronizationContext
- C# Winform使用线程,委托定时更新界面UI控件,解决界面卡顿问题
- 线程通讯(SynchronizationContext )
- Windows Server 2008 R2 安装及配置指南
- Android实现渐显按钮的左右滑动效果
- 如果你 <?php ?>好使 但 <? ?> 就不好使,其实是php.ini中的一个参数问题
- Apache与Tomcat集群配置
- Android SDK开发包国内下载地址
- 用SynchronizationContext解决界面的更新线程数据问题
- Android环境搭建(XP/Win7)
- 算法(数学)与外语是程序员未来发展的基石
- 关于usb inrush current test 日记
- #R#R的一些注意事项
- 在win7下找回丢失的桌面IE图标
- POJ 2187 Beauty Contest
- jstat用法详解
- 苹果开发帐户续费