我最近尝试使用backgroundworker而不是"经典"线程,我意识到它至少对我来说,比解决方案更多的问题.我有一个后台工作程序运行同步读取(在这种情况下来自serialPort)并在1个代码行中被阻止大约30秒,然后取消支持不是解决方案.我看到如果应用程序此时关闭(使用十字按钮和Application.Exit()),该过程将永远保持僵尸.
我需要一种强制中止或杀死backgroundworker线程的方法.
我的程序有一个组件 - 称为调度程序 - 它允许其他组件及时注册他们想要回调的时间点.这应该像Unix cron服务一样工作,即你告诉调度程序"在每整个小时过去十分钟通知我".
我意识到Java中没有真正的回调.
这是我的方法,是否有一个已经完成这些工作的库?随意提出改进建议.
注册调度程序通行证:
在启动时或在新的注册请求之后,调度程序以当前系统时间的Calendar对象开始,并检查数据库中是否存在与此时间点匹配的任何条目.如果存在,则执行它们并重新开始该过程.如果没有,则Calendar对象中的时间增加一秒,并重新检查entreis.重复这一过程,直到有一个或多个匹配的条目.(离散事件模拟)
然后,调度程序将记住每秒的时间戳,睡眠和唤醒,以检查它是否已存在.如果它恰好醒来并且时间已经过去,它将重新开始,同样如果时间到了且作业已经执行.
编辑:谢谢你指点我Quartz.但是,我正在寻找更小的东西.
在Facebook和Orkut相册中是否有实现照片标记的jQuery库或任何潜在客户?
谢谢
有关:
如果方法抛出ThreadPool.QueueUserWorkItem方法调用的异常,将抛出异常?还是会被吃掉?
我的意思是它永远不会被抛出调用线程吗?
我有一个显示HTML文件的编辑器窗格.当我要求它执行一次时,它会显示HTML文件.然后,我对我的HTML文件进行了更改并使用该setPage方法,以便打印更新的HTML文件,但即使HTML文件已更改,也不会执行此操作.
这是编辑器窗格的问题还是我的代码有问题?
标头/ cpp文件中应标头的顺序是什么?显然,后续标题所需的那些应该更早,特定于类的标题应该在cpp范围内而不是标题范围,但是是否有一个集合顺序约定/最佳实践?
我正在概述/澄清ruby(非rails/merb/etc)项目的理想项目结构.我猜它遵循以下几点:
app/
bin/ #Files for command-line execution
lib/
appname.rb
appname/ #Classes and so on
Rakefile #Running tests
README
test,spec,features/ #Whichever means of testing you go for
appname.gemspec #If it's a gem
Run Code Online (Sandbox Code Playgroud)
我有什么不对吗?我错过了哪些部分?
一个小白将根据PowerShell的进出口升技所以,请不要责备我:-)所以我有一些相当大的日志文件(600MB),我需要处理,我的剧本基本上剔除了那些包含行"收到的消息",然后tokenises那些行并将一些标记输出到输出文件.
脚本的逻辑很好(虽然我确定它可能更有效)但问题是,当我将行写入输出文件并且文件随后变得越来越大时,powershell使用的内存量也增加到了记忆力衰竭.
任何人都可以建议我如何阻止这种情况发生?我想将日志分解成只有10mb的临时文件然后处理临时文件而不是?
继承我的代码,你们给予的任何帮助都会很棒:-)
Get-Date | Add-Content -Path d:\scripting\logparser\testoutput.txt
$a = Get-Content D:\scripting\logparser\importsample.txt
foreach($l in $a){
#$l | Select-String -Pattern "Message Received." | Add-Content -Path d:\scripting\logparser\testoutput.txt
if
(($l | Select-String -Pattern "Message Received." -Quiet) -eq "True")
{
#Add-Content -Path d:\scripting\logparser\testoutput.txt -value $l
$var1,$var2,$var3,$var4,$var5,$var6,$var7,$var8,$var9,$var10,$var11,$var12,$var13,$var14,$var15,$var16,$var17,$var18,$var19,$var20 = [regex]::split($l,'\s+')
Add-Content -Path d:\scripting\logparser\testoutput.txt -value $var1" "$var2" "$var3" "$var4" "$var16" "$var18
}
else
{}
}
Get-Date | Add-Content -Path d:\scripting\logparser\testoutput.txt
Run Code Online (Sandbox Code Playgroud) 在我的Delphi程序中,我想显示应用程序生成的一些信息.没什么好看的,只有2列文字,部分字样用彩色编码.
我想我基本上有两个选择:
HTML更标准,但似乎加载速度较慢,我不得不处理The Annoying Click Sound.如今,RTF仍然是一个不错的选择吗?
编辑:
来自dangph的好问题:"生成的文档会发生什么?"
查看后文件将被丢弃.
在Ruby中,以某种方式映射数组的最具表现力的方式是什么?某些元素被修改而其他元素保持不变?
这是一种直截了当的方式:
old_a = ["a", "b", "c"] # ["a", "b", "c"]
new_a = old_a.map { |x| (x=="b" ? x+"!" : x) } # ["a", "b!", "c"]
Run Code Online (Sandbox Code Playgroud)
如果不够的话,当然会省略"单独"的情况:
new_a = old_a.map { |x| x+"!" if x=="b" } # [nil, "b!", nil]
Run Code Online (Sandbox Code Playgroud)
我想要的是这样的:
new_a = old_a.map_modifying_only_elements_where (Proc.new {|x| x == "b"})
do |y|
y + "!"
end
# ["a", "b!", "c"]
Run Code Online (Sandbox Code Playgroud)
有没有一些很好的方法在Ruby中执行此操作(或者Rails有一些我还没有找到的方便方法)?
谢谢大家的回复.虽然你总是说服我最好只使用map三元运算符,但有些人发布了非常有趣的答案!
c# ×2
java ×2
ruby ×2
c++ ×1
collect ×1
cron ×1
delphi ×1
header ×1
html ×1
include ×1
iteration ×1
javascript ×1
jeditorpane ×1
jquery ×1
map ×1
memory ×1
page-layout ×1
powershell ×1
rtf ×1
scheduling ×1
threadpool ×1
winforms ×1