首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C#显示SubTitles

C#显示SubTitles
EN

Stack Overflow用户
提问于 2012-06-13 21:02:00
回答 2查看 2.2K关注 0票数 1

我尝试在合适的时间在屏幕上显示SubTitles

现在我得到了一个例外

代码:

代码语言:javascript
复制
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; }
}

例外:

定时器定时器=新定时器(ShowSubtitles,null,0,100);

“System.Timers.Timer”不包含采用4个参数的构造函数

EN

回答 2

Stack Overflow用户

发布于 2012-06-13 21:05:05

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

票数 3
EN

Stack Overflow用户

发布于 2012-06-13 21:09:53

您需要将计时器更改为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!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11015417

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档