2016-10-04 9 views
0

私はPanasonic apiで作業しています。私は文字列形式でビデオの日付と時刻を返す関数GetFrameTime()を実行します。なぜこの関数はデバッガで上書きしない限り空の文字列を返しますか?

私はアプリケーションをデバッグしていませんでした。ファンクションコールライン上のi F10が正しい日付を返すかどうかだけが必要です。それ以外の場合は空の文字列を返します。

string time = _panasonicApiControl.GetFrameTime(); 

私はそれがタイミングの問題だったかどうかを確認するために呼び出しで毎秒それを置くことを試みたが、私は、その後に何も

その上にラインとf10キーにブレークポイントを配置しない限り、それが何かを返すことはありませんapiからのドキュメンテーション。

+1

この関数を別のスレッドから呼び出すことはできますか? – YuvShap

+0

どこかの競合状態のように聞こえます。 –

+0

私が知っている人はいません。私はスレッドをあまり使っていないので、私は知識が豊富ではありませんが、私のコードではスレッド化を行っていません。 – Sam

答えて

1

ブレークポイントを使用しているときに発生しない問題は、スレッドの問題に関連していることがほとんどです。

私は、_panasonicApiControlオブジェクトがネイティブスレッドセーフではなく(おそらくそうではない)、その周りに独自の同期メカニズムを作成していないと、適切な同期を取っていない別のスレッドからこのメソッドを呼び出していると思いますそれは複数のスレッドから奇妙な結果(空の文字列など)を取得する可能性があります。

関連する問題