【问题标题】:DispatcherTimer.Start()' must declare a body because it is not marked abstract, extern, or partial in MVC4DispatcherTimer.Start()' 必须声明一个主体,因为它在 MVC4 中没有标记为抽象、外部或部分
【发布时间】:2013-12-05 08:51:45
【问题描述】:
public void DispatcherTimerSetup(HttpClient httpClient)
{
    Client = httpClient;
    dispatcherTimer = new DispatcherTimer();
    dispatcherTimer.Tick += dispatcherTimer_Tick;
    dispatcherTimer.Interval = new TimeSpan(0, 1, 0); // TimeSpan for 1 Minute 0 secs
    if (!dispatcherTimer.IsEnabled)
    {
        dispatcherTimer.Start();
    }
}

class DispatcherTimer
{
    public void Start();
}

我收到这样的错误

DispatcherTimer.Start()' 必须声明一个主体,因为它没有标记为抽象、外部或部分

【问题讨论】:

  • 为什么要声明自己的 DispatcherTimer 类?您应该使用existing one。错误信息告诉你需要为Start()方法提供一个实现,因为它不是抽象方法
  • 首先我像这样声明了这个类 DispatcherTimer dispatcherTimer;,之后我得到了这个错误 DispatcherTimer' 找不到(你是否缺少 using 指令或程序集引用?)为此我创建了 Dispatcher Where我需要得到这个现有的 Dispatcher 类。你能帮我吗?我是 MVC 的新手,现在正在使用 MVC4。提前致谢
  • @user306540​​1 现在猜猜那个错误信息是什么意思?
  • @user306540​​1 如果您使用的是 MVC,则需要从学习 C# 开始。 MVC 开发需要了解 C# 如何作为一种语言工作的基本知识。还有一些组件不能在 MVC 项目中有效使用。 DispatcherTimer 就是其中之一。我建议买两本不错的书:一本关于 C#/Visual Studio 开发,一本关于 MVC 4.0。然后,您将能够在这里提出更有可能吸引信息丰富答案的问题
  • 现在我可以做到了,请不要说不可能的人会失望。

标签: c# asp.net-mvc-4 c#-4.0


【解决方案1】:

问题是你没有导入相应的namespaceSystem.Windows.Threading)。然后,您创建了一个不完整的类 DispatchTimer。您的实现缺少 Start() 方法的方法主体。

添加包含内置 DispatchTimer 类的命名空间 (using System.Windows.Threading;) 并删除您自己的类实现,应该没问题。

【讨论】:

  • 使用 System.Windows.Threading 添加后;这个 NM 我得到了这个错误命名空间“System.Windows”中不存在类型或命名空间名称“Threading”所以我认为我们需要添加任何程序集,如 WindowsBase.dll。或者别的什么
【解决方案2】:

不清楚你要做什么。

class DispatcherTimer
{
    public void Start();//<--Here is the problem method has nobody. Either you should add body or mark it abstract.
}

您应该将您的课程从 DispatcherTimer 重命名为其他名称,我不确定 TickInterval、IsEnabled 是如何不给出错误的。

您可能应该完全删除您的 DispatcherTimer 类并使用 System.Windows.Threading.DispatcherTimer

不确定是否可以在 Asp.Net 中使用DispatcherTimer,可能需要调查。

【讨论】:

  • 是的,我们需要添加这个引用 WindowsBase.dll 我明白了 感谢 Alll.......
【解决方案3】:

你正在寻找类似的东西

public sealed class MyDispatcherTimer
{
    DispatcherTimer dispatcherTimer;
    public void DispatcherTimerSetup(HttpClient httpClient)
    {
        Client = httpClient;
        dispatcherTimer = new DispatcherTimer();
        dispatcherTimer.Tick += dispatcherTimer_Tick;
        dispatcherTimer.Interval = new TimeSpan(0, 1, 0); // TimeSpan for 1 Minute 0 secs

    }

    public void StartMyDispatcherTimer()
    {
        if (dispatcherTimer != null && !dispatcherTimer.IsEnabled)
            dispatcherTimer.Start();
    }
}

但正如一些 cmets 所说,您为什么要寻找这个还不清楚。已经有一个运行良好的DispatcherTimer 类,所以应该没有理由包装它。

我希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多