我有一個任務與大量的輸入數據(視頻)。我需要在後臺處理它的幀而不凍結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