C#を使用してWindows Phoneアプリケーションを作成しようとしています。 1つの画像を100ミリ秒間表示し、別の画像に切り替えるタイマーを設定してから、もう一度画像が点滅するまでにもう一度900ミリ秒待機します。私は以下のコードを書いていますが、一貫して点滅するようには見えません。何か案は?Windows Phoneタイマー間隔に一貫性がない
public partial class MainPage : PhoneApplicationPage
{
DispatcherTimer timer = new DispatcherTimer();
List<string> files = new List<string>() { "Images/off-light.png", "Images/on-light.png" };
List<BitmapImage> images = new List<BitmapImage>();
int current = 0;
// Constructor
public MainPage()
{
InitializeComponent();
foreach (string file in files)
{
BitmapImage image = new BitmapImage(new Uri(file, UriKind.Relative));
images.Add(image);
}
timer = new DispatcherTimer();
timer.Interval = TimeSpan.FromMilliseconds(900);
timer.Tick += new EventHandler(timer_Tick);
}
void timer_Tick(object sender, EventArgs e)
{
myImage.Source = images[current];
current++;
if (current >= files.Count)
{
current = 0;
timer.Interval = TimeSpan.FromMilliseconds(100);
timer.Stop();
timer.Start();
}
else
{
timer.Interval = TimeSpan.FromMilliseconds(900);
timer.Stop();
timer.Start();
}
}
private void btnStop_Click(object sender, RoutedEventArgs e)
{
timer.Stop();
myImage.Source = images[0];
}
private void btnStart_Click(object sender, RoutedEventArgs e)
{
timer.Start();
}
}
この場合、「一貫性がない」とはどういう意味ですか?イメージは一度フラッシュした後、もう一度フラッシュしませんか?それは100ミリ秒より長いか短いか?また、操作の順序を変更することも考えられます。タイマーを停止し、間隔を設定してから、タイマーを再起動します。正直言っても、私はあなたが停止/再起動せずに間隔を設定できると思います。 –
イメージが表示されるタイミングが本当に100msではなく、真に900ms毎に待たないという点で一貫していません。私は停止して再起動することなく間隔を設定しようとします。 – zaber76
実際には何かが正しくないことに気がつくところは、このコードブロックにクリックタイプのmp3ファイルを再生するための行を置いた場合です:if(current> = files.Count) { current = 0; timer.Interval = TimeSpan.FromMilliseconds(100); timer.Stop(); timer.Start(); } 「クリック」という音が連続して複数回聞こえることがあります。しかし間違いなく一貫しています。複数のタイマーがあるように聞こえる。 – zaber76