我有一个任务与大量的输入数据(视频)。我需要在后台处理它的帧而不冻结UI,而且我不需要处理每一帧。一次只有一个线程#
所以我想创建一个后台线程,并在背景忙时跳过帧。比我从视频输入和再次获得另一帧。
我现在有这个简单的代码。我工作了。但它能引起麻烦,可能有更好的方法吗?
public class VideoProcessor{
bool busy=false;
void VideoStreamingEvent(Frame data){
if(!busy){
busy=true;
InvokeInBackground(()=>{
DataProcessing(data);
busy=false;
});
}
}
}
因为它不会工作(以可靠的方式)。 'busy'标志必须是'volatile'。这就是说...如果它适用于这种(简单的)本地化任务IMO,则不需要使事情变得更加复杂。 – 2014-09-03 12:24:07
从问题中不清楚你想要什么。你只想在一个线程中执行'VideoStreamingEvent'?如果是这样,当另一个线程同时尝试执行它时,你会发生什么? – 2014-09-03 12:30:44