数码资讯
在WPF按钮点击点击多次在同一时间
为了解决在多个触发Click方法同时点击WPF按钮,供你参考,以下具体内容 日期时间lastclick =现在的日期时间; 对象=新的对象(); int = i 0; private void button_click(object sender,routedeventargs E) { this.
选购提示
关注价格、性能、续航、售后和真实使用场景,理性比较后再下单。
为了解决在多个触发Click方法同时点击WPF按钮,供你参考,以下具体内容
日期时间lastclick =现在的日期时间;
对象=新的对象();
int = i 0;
private void button_click(object sender,routedeventargs E)
{
this.isenabled = false;
var t =(datetime.now - TotalMilliseconds lastclick);
++;
现在lastclick =的日期时间;
system.diagnostics.debug.print(T +
线程(睡眠)(2000);
this.isenabled =真;
}
上面的代码并没有解决用户点击两个按钮触发两倍的问题,因为UI线程是单线程的,所以这会导致用户点击两次连续,然后调用button_click两秒。
1207.069,1;13:58:22,2017年4月19日
2055.1176,2;13:58:24,2017年4月19日
所以在this.isenabled = false;在强制刷新界面,代码如下:
private void button_click(object sender,routedeventargs E)
{
this.isenabled = false;
dispatcherhelper.doevents();
var t =(datetime.now - TotalMilliseconds lastclick);
++;
现在lastclick =的日期时间;
system.diagnostics.debug.print(T +
线程(睡眠)(2000);
this.isenabled =真;
}
公共静态类dispatcherhelper
{
{ securitypermissionattribute(securityaction.demand,旗帜= securitypermissionflag。unmanagedcode)}
public static void DoEvents()
{
dispatcherframe框架=新dispatcherframe();
dispatcher.currentdispatcher.begininvoke(dispatcherpriority.background,新dispatcheroperationcallback(exitframes),框架);
尝试{ dispatcher.pushframe(架);}
赶上(InvalidOperationException){ }
}
私有静态对象ExitFrames(框架)
{
((dispatcherframe)框架)。继续= false;
返回null;
}
}
dispatcherhelper.doevents();该方法将迫使界面刷新,和问题解决。
以上是本文的全部内容,希望能对您有所帮助,希望大家多多支持。
日期时间lastclick =现在的日期时间;
对象=新的对象();
int = i 0;
private void button_click(object sender,routedeventargs E)
{
this.isenabled = false;
var t =(datetime.now - TotalMilliseconds lastclick);
++;
现在lastclick =的日期时间;
system.diagnostics.debug.print(T +
线程(睡眠)(2000);
this.isenabled =真;
}
上面的代码并没有解决用户点击两个按钮触发两倍的问题,因为UI线程是单线程的,所以这会导致用户点击两次连续,然后调用button_click两秒。
1207.069,1;13:58:22,2017年4月19日
2055.1176,2;13:58:24,2017年4月19日
所以在this.isenabled = false;在强制刷新界面,代码如下:
private void button_click(object sender,routedeventargs E)
{
this.isenabled = false;
dispatcherhelper.doevents();
var t =(datetime.now - TotalMilliseconds lastclick);
++;
现在lastclick =的日期时间;
system.diagnostics.debug.print(T +
线程(睡眠)(2000);
this.isenabled =真;
}
公共静态类dispatcherhelper
{
{ securitypermissionattribute(securityaction.demand,旗帜= securitypermissionflag。unmanagedcode)}
public static void DoEvents()
{
dispatcherframe框架=新dispatcherframe();
dispatcher.currentdispatcher.begininvoke(dispatcherpriority.background,新dispatcheroperationcallback(exitframes),框架);
尝试{ dispatcher.pushframe(架);}
赶上(InvalidOperationException){ }
}
私有静态对象ExitFrames(框架)
{
((dispatcherframe)框架)。继续= false;
返回null;
}
}
dispatcherhelper.doevents();该方法将迫使界面刷新,和问题解决。
以上是本文的全部内容,希望能对您有所帮助,希望大家多多支持。
声明:本文内容用于数码产品信息整理与选购参考,具体价格、库存、售后政策以官方渠道和电商页面实时信息为准。