不,这 是不是
安全的。
Thread.Abort()最好的时候是足够粗略的,但是在这种情况下,您的控件无法(委托)控制委托回调中的 *** 作。您不知道该应用程序的其余部分将保留在什么状态,并且当需要再次致电该委托人时,很可能会陷入困境。
设置一个计时器。文本更改后稍等片刻,然后再调用委托。然后等待它返回,然后再次调用它。如果它 是 缓慢的,或用户打字 是
快的话,他们可能不希望自动完成反正。
现在,您将为(可能) 每个按键 启动一个新线程。这不仅会降低性能,而且没有必要-如果用户没有暂停,他们很可能不在寻找该控件来完成输入的内容。
我之前提到过,但是P Daddy说的更好:
您最好只实现一个一键式定时器(可能会有一个半秒的超时),并在每次击键时将其重置。
想想看:即使是快速连接到快速数据库,快速打字员也可能在第一个自动完成回调有机会完成之前创建线程得分。但是,如果你们推迟,直到最后一次按键后的短时间内请求已过,那么你打的是甜蜜点,其中用户已键入了所有他们想要更好的机会(或所有他们知道!),并且是
刚 开始等待自动完成功能开始。延迟播放-
半秒可能适合不耐烦的触摸打字员,但是如果您的用户更放松…或者您的数据库更慢…那么您可能会延迟2-3秒甚至更长的时间来获得更好的结果。但是,此技术最重要的部分是您
resetthe timer on every keystroke。
并且除非您期望数据库请求实际 挂起 ,否则请不要试图允许多个并发请求。如果当前正在处理一个请求,请在另一个请求完成之前等待它完成。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)