C# 显示字幕

本文关键字:字幕 显示 | 更新日期: 2023-09-27 18:37:14

>我试图在正确的时间
在屏幕上显示字幕现在我得到了一个例外

代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Timers;
class Program
{
    private static Queue<Subtitle> _subtitles;
    private static Subtitle _activeSubtitle;
    private static TimeSpan _currentTime = new TimeSpan();
    static void Main(string[] args)
    {
        _subtitles = new Queue<Subtitle>();
        Subtitle title1 = new Subtitle()
        {
            StartTime = TimeSpan.Parse("00:00:06,000"),
            EndTime = TimeSpan.Parse("00:00:07,400"),
            Text = "Enjoy the movie!"
        };
        Subtitle title2 = new Subtitle()
        {
            StartTime = TimeSpan.Parse("00:00:07,500"),
            EndTime = TimeSpan.Parse("00:00:09,500"),
            Text = "Hi, my name is Mary"
        };
        Subtitle title3 = new Subtitle()
        {
            StartTime = TimeSpan.Parse("00:00:22,000"),
            EndTime = TimeSpan.Parse("00:00:85,100"),
            Text = "Hello my name is John."
        };
        _subtitles.Enqueue(title1);
        _subtitles.Enqueue(title2);
        _subtitles.Enqueue(title3);
        Timer timer = new Timer(ShowSubtitles, null, 0, 100);
        while (_currentTime <= new TimeSpan(0, 0, 0, 30))
        {
        }
        Console.WriteLine("End");
    }
    private static void ShowSubtitles(object state)
    {
        if (_activeSubtitle == null && _subtitles.Count > 0)
            _activeSubtitle = _subtitles.Dequeue();
        Console.WriteLine(_currentTime);
        if (_activeSubtitle != null)
        {

            if (_currentTime >= _activeSubtitle.StartTime && _currentTime <= _activeSubtitle.EndTime)
                Console.WriteLine("'t{0}", _activeSubtitle.Text);
            if (_currentTime >= _activeSubtitle.EndTime)
                _activeSubtitle = null;
        }
        _currentTime = _currentTime.Add(new TimeSpan(0, 0, 0, 0, 100));
    }
}
internal class Subtitle
{
    public TimeSpan StartTime { get; set; }
    public TimeSpan EndTime { get; set; }
    public string Text { get; set; }
}

例外:
定时器定时器=新定时器(显示字幕,空,0,100);
"System.Timers.Timer"不包含接受 4 个参数的构造函数

C# 显示字幕

System.Timers.Timer没有

四个参数的构造函数

http://msdn.microsoft.com/en-us/library/system.timers.timer.aspx

你可能想要的是System.Threading.Timer

http://msdn.microsoft.com/en-us/library/system.threading.timer.aspx

您需要将 Timer

更改为 System.Threading.Timer 或根据其在 http://msdn.microsoft.com/en-us/library/system.timers.timer.aspx 处的定义重新定义 System.Timers.Timer 的使用方式。

它可能会令人困惑,因为 C# 中至少有 3 种类型的计时器 - 在 System.Timers、System.Threading 和 System.Windows.Forms 中!