1

Datetime が開始されているかどうかを毎秒チェックするコードを作成するのに助けが必要です。開始されている場合は、すでに実行中の関数を閉じる必要があります。私はdispatchertimerを知っていますが、バックグラウンドでスレッドを実行したいです。その理由は、datetime が開始されるまで再生するメディア プレーヤーがあり、ムービーが 1 秒ごとに再起動されるためです。

少し必死になっている私を助けていただければ、とても感謝しています...

        Dictionary<string, string> listBox3Dict = new Dictionary<string, string>();
        private bool listbox3job()
        {
            AxWMPLib.AxWindowsMediaPlayer axWmp =
wfh.Child as AxWMPLib.AxWindowsMediaPlayer;
            DateTime? start = DateTimePicker1.Value;
            DateTime? end = DateTimePicker2.Value; // This. End date. If end date. Stop movie.
            DateTime now = DateTime.Now;

            if (start == null || end == null)
            {
            }
            else if (now >= start.Value && now <= end.Value)
                {
                    foreach (var selected in listBox3.Items)
                    {
                        string s = selected.ToString();

                        if (listBox3Dict.ContainsKey(s))
                        {
                            axWmp.URL = (listBox3Dict[s]);
                        }
                    }

                return true;
            }
            return false;
        }
4

1 に答える 1

3

わかりました、私のより良い判断に反して、毎秒値を確認できるソリューションを提供します. このソリューションを提供する唯一の理由はAxWindowsMediaPlayer、再生が発生したときに発生するイベントがオブジェクトにないためです。BackgroundWorkerこれを行うには、を構築する必要があります。

var worker = new BackgroundWorker();
worker.WorkerSupportsCancellation = true;

worker.DoWork += (s, e) =>
{
    // here you will check the time
    while (end > DateTime.Now)
    {
        Thread.Sleep(1000);
    }
}

を使用する準備ができたら、BackgroundWorkerこれを発行します。

worker.RunWorkerAsync();

ただし、質問に十分な努力を払っていないため、いくつかの仮定を立てています。DateTime.Nowこれらの変数をすべて宣言したため、終了時刻を確認したいと思います。今日も同様の質問がありました - ほぼ同じ操作を実行しています。私がそのように仮定しているもう 1 つの理由は、使用しているコントロールが、メディア ファイルの現在の再生場所を特定する適切なメカニズムを提供していないためです。

今後は、質問にもっと力を入れてください。覚えておいてください、私たちはあなたが何をしているかについて何も知らないので、文脈なしに解決策を提供することは困難です. あなたがおそらく忙しく、窮地に追い込まれているように感じていることは知っていますが、コメントスレッドからわかるように、情報をほとんどまたはまったく提供しないと、プロセスがスピードアップしません.

于 2013-04-17T20:18:23.117 に答える