Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# windows phone中的倒计时_C#_Visual Studio_Windows Phone 7_Windows Phone 8 - Fatal编程技术网

C# windows phone中的倒计时

C# windows phone中的倒计时,c#,visual-studio,windows-phone-7,windows-phone-8,C#,Visual Studio,Windows Phone 7,Windows Phone 8,如何在我的Windows Phone 8.1应用程序中实现倒计时?似乎没有这方面的信息。我所能找到的所有东西都适用于Windows窗体应用程序或Windows应用程序,但它们似乎都不适用于手机应用程序。这就是我正在做的- namespace Timer { public partial class MainPage : Page { DispatcherTimer mytimer = new DispatcherTimer();

如何在我的Windows Phone 8.1应用程序中实现倒计时?似乎没有这方面的信息。我所能找到的所有东西都适用于Windows窗体应用程序或Windows应用程序,但它们似乎都不适用于手机应用程序。这就是我正在做的-

namespace Timer
{
    public partial class MainPage : Page
    {           
        DispatcherTimer mytimer = new DispatcherTimer();
        int currentcount = 0;
        public MainPage()
        {
            InitializeComponent();

            mytimer = new DispatcherTimer();
            mytimer.Interval = new TimeSpan(0, 0, 0, 1, 0);
            mytimer.Tick += new EventHandler(mytime_Tick);
              //HERE error comes Cannot implicitly convert type System.EventHandler to System.EventHandler<object>
        }

        private void mytime_Tick(object sender,EventArgs e)
        {
            timedisplayBlock.Text = currentcount++.ToString();    
        }

        private void startButton_Click(object sender, RoutedEventArgs e)
        {
            mytimer.Start();
        }
    }
}
名称空间计时器
{
公共部分类主页:第页
{           
DispatcherTimer mytimer=新DispatcherTimer();
int currentcount=0;
公共主页()
{
初始化组件();
mytimer=新的调度程序();
mytimer.Interval=新的时间跨度(0,0,0,1,0);
mytimer.Tick+=新事件处理程序(mytime\u Tick);
//此处出现错误,无法将类型System.EventHandler隐式转换为System.EventHandler
}
私有void mytime_Tick(对象发送方,事件参数e)
{
timedisplayBlock.Text=currentcount++.ToString();
}
私有无效开始按钮单击(对象发送者,路由目标)
{
mytimer.Start();
}
}
}
但它给了我这个错误-
无法将类型System.EventHandler隐式转换为System.EventHandler

您拼错了事件处理程序名称事件处理程序定义也需要更改,它应该是:

mytimer.Tick += mytime_Tick; // removed the 'r'

您的增量是否应该写为

timedisplayBlock.Text = (++currentcount).ToString();

我认为增量不会太重要,但仍应正确写入,以确保不会留下一个计数。 -请参见下面链接上的Sergiol的问题和David的答案

我注意到的另一件事是,您正在初始化
Dispatchermer
两次

DispatcherTimer mytimer = new DispatcherTimer();
...
..
mytimer = new DispatcherTimer();
更好的做法是在实例上初始化以节省开销,尽管这取决于使用范围。鉴于我不知道您的其他代码是如何使用它的,我建议将其重写如下

namespace Timer
{
    public partial class MainPage : Page
    {
        DispatcherTimer mytimer = new DispatcherTimer();
        int currentcount = 0;

        public MainPage()
        {
            InitializeComponent();

            mytimer.Interval = new TimeSpan(0, 0, 0, 1, 0);
            mytimer.Tick += new EventHandler(mytime_Tick);
        }

        private void mytime_Tick(object sender, EventArgs e)
        {
            timedisplayBlock.Text = (++currentcount).ToString();
        }

        private void startButton_Click(object sender, RoutedEventArgs e)
        {
            mytimer.Start();
        }
    }
}
综上所述,我无法重现复制时的故障

编辑-这可能是您的问题()

更改
private void mytimer\u勾选(对象发送方,事件参数)



private void mytimer\u勾选(object sender,object e)

你能发布你认为有效但没有成功的代码吗?可能包括在Windows应用程序中工作的屏幕截图?使用超时为1的Dispatchersecond@AustinMullins我用我的代码和错误编辑了我的问题。@thumbmunkeys我使用了
dispatchermer
,但t给了我一个错误。现在我得到了这个错误-
无法隐式转换类型System.EventHandler到System.EventHandler
无法将System.EventHandler类型隐式转换为System.EventHandler
是的,我已经用一个额外的
r
修复了这个错误。现在它给了我我提到的这个新错误。我用Windows phone silverlight尝试了相同的代码,它正在工作,但使用的是Windows phone blank app,它给出了上述错误?我可以做些什么来修复此错误?另外,
使用System.Windows.Threading
空白应用程序中不起作用
namespace Timer
{
    public partial class MainPage : Page
    {
        DispatcherTimer mytimer = new DispatcherTimer();
        int currentcount = 0;

        public MainPage()
        {
            InitializeComponent();

            mytimer.Interval = new TimeSpan(0, 0, 0, 1, 0);
            mytimer.Tick += new EventHandler(mytime_Tick);
        }

        private void mytime_Tick(object sender, EventArgs e)
        {
            timedisplayBlock.Text = (++currentcount).ToString();
        }

        private void startButton_Click(object sender, RoutedEventArgs e)
        {
            mytimer.Start();
        }
    }
}