|
分類:[VB.NET/VB2005 以降]
いつもお世話になってます。
VS2008 VBで開発しています。
現在、動画を再生するAPを開発しているのですが、動画を読み込むのに10秒近くかかっています。 その間、Load画像みたいなものを作って表示しようとしているのですが、スレッドにたどり着きいろいろと試行錯誤しております。 そこで容易に扱える BackGroundWorker を見つけて早速試してみました。 ピクチャーボックスを10個用意して0〜9の画像の可視を単純に変更しているPGです。
Private Sub BgWork_DoWork(ByVal sender As System.Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles BgWork.DoWork Dim rNum As Integer = 0 '表示画像保持用 'PictureBoxの配列宣言・格納 Dim pictWait() As PictureBox = {F_Waiting.Pict0, F_Waiting.Pict1, F_Waiting.Pict2, F_Waiting.Pict3, _ F_Waiting.Pict4, F_Waiting.Pict5, F_Waiting.Pict6, F_Waiting.Pict7, _ F_Waiting.Pict8, F_Waiting.Pict9} Do 'いったんすべての画像の可視をFalse For i = 0 To 16 pictWait(i).Visible = False Next '表示する画像のみTrue pictWait(rNum).Visible = True rNum += 1 If rNum > 16 Then rNum = 0 Loop End Sub
上記の部分を動画を再生するフォームのLord時にRunWorkerAsync()で呼び出し、読み込み完了時にCancelAsync()で中断しています。 単純に読み込みする際、開発しているPCのスペックの問題なのか、画像の切り替えが画面に反映されなく表示部分だけ真っ黒になったままです。なにか良いアイディアないでしょうか?
ちなみにWebではよく読み込み中の画像(映像?)を見かけるのですが、市販やフリーのソフトではプログレスバー以外の手法を見かけたことはありません。やはり皆さんはいろいろと試した結果、一番無難な手法ということなのでしょうか?
|