System.StackOverflowException WPF MVVM

2023-12-30

我正在尝试使用 MVVM 在 WPF 中创建一个简单的数字时钟。我有一个带有装订的标签。背后的代码很简单,每秒都会引发一个属性更改事件,并且我有一个 stackoverflow 异常。有人可以帮忙吗?

public partial class MainWindow : Window, INotifyPropertyChanged
{
    public MainWindow()
    {
        InitializeComponent();
        this.DataContext = this;
    }
    private string _lblValue;
    public string LabelValue
    {
        get
        {
            UpdateLabel();
            return _lblValue;
        }
        set
        {
            _lblValue = value;
            OnPropertyChanged(LabelValue);
        }
    }

    private void UpdateLabel()
    {
        _lblValue = System.DateTime.Now.ToString();
        //System.Threading.Thread.Sleep(2000);
        OnPropertyChanged("LabelValue");
    }

    public event PropertyChangedEventHandler PropertyChanged;
    protected void OnPropertyChanged(string propName)
    {
        var handler = PropertyChanged;
        if (handler != null)
        {
            handler(this, new PropertyChangedEventArgs(propName));
        }
    }
}

正如 har07 所解释的,这是一个无限的 UI 循环。这是我对这个问题的修复。

public partial class MainWindow : Window, INotifyPropertyChanged
{
    public MainWindow()
    {
        InitializeComponent();
        this.DataContext = this;

        Task.Run(() => UpdateLabel());
    }

    private string _lblValue;
    public string LabelValue
    {
        get
        {
            return _lblValue;
        }
        set
        {
            _lblValue = value;
            OnPropertyChanged();
        }
    }

    private void UpdateLabel()
    {
        while (true)
        {
            LabelValue = System.DateTime.Now.ToString();
            System.Threading.Thread.Sleep(1000);
        }
    }

    public event PropertyChangedEventHandler PropertyChanged;
    protected void OnPropertyChanged([CallerMemberName] string propName = null)
    {
        var handler = PropertyChanged;
        if (handler != null)
        {
            handler(this, new PropertyChangedEventArgs(propName));
        }
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

System.StackOverflowException WPF MVVM 的相关文章

  • C++11 删除重写方法

    Preface 这是一个关于最佳实践的问题 涉及 C 11 中引入的删除运算符的新含义 当应用于覆盖继承父类的虚拟方法的子类时 背景 根据标准 引用的第一个用例是明确禁止调用某些类型的函数 否则转换将是隐式的 例如最新版本第 8 4 3 节
  • 为什么 GCC 不允许我创建“内联静态 std::stringstream”?

    我将直接前往 MCVE include
  • 需要帮助优化算法 - 两百万以下所有素数的总和

    我正在尝试做一个欧拉计划 http projecteuler net问题 我正在寻找 2 000 000 以下所有素数的总和 这就是我所拥有的 int main int argc char argv unsigned long int su
  • 访问外部窗口句柄

    我当前正在处理的程序有问题 这是由于 vista Windows 7 中增强的安全性引起的 特别是 UIPI 它阻止完整性级别较低的窗口与较高完整性级别的窗口 对话 就我而言 我想告诉具有高完整性级别的窗口进入我们的应用程序 它在 XP 或
  • 重载 (c)begin/(c)end

    我试图超载 c begin c end类的函数 以便能够调用 C 11 基于范围的 for 循环 它在大多数情况下都有效 但我无法理解和解决其中一个问题 for auto const point fProjectData gt getPoi
  • ASP.NET Core 3.1登录后如何获取用户信息

    我试图在登录 ASP NET Core 3 1 后获取用户信息 如姓名 电子邮件 id 等信息 这是我在登录操作中的代码 var claims new List
  • 使用 C# 中的 CsvHelper 将不同文化的 csv 解析为十进制

    C 中 CsvHelper 解析小数的问题 我创建了一个从 byte 而不是文件获取 csv 文件的类 并且它工作正常 public static List
  • x:将 ViewModel 方法绑定到 DataTemplate 内的事件

    我基本上问同样的问题这个人 https stackoverflow com questions 10752448 binding to viewmodels property from a template 但在较新的背景下x Bind V
  • 两个类可以使用 C++ 互相查看吗?

    所以我有一个 A 类 我想在其中调用一些 B 类函数 所以我包括 b h 但是 在 B 类中 我想调用 A 类函数 如果我包含 a h 它最终会陷入无限循环 对吗 我能做什么呢 仅将成员函数声明放在头文件 h 中 并将成员函数定义放在实现文
  • C# xml序列化必填字段

    我需要将一些字段标记为需要写入 XML 文件 但没有成功 我有一个包含约 30 个属性的配置类 这就是为什么我不能像这样封装所有属性 public string SomeProp get return someProp set if som
  • 如何在当前 Visual Studio 主机内的 Visual Studio 扩展中调试使用 Roslyn 编译的代码?

    我有一个 Visual Studio 扩展 它使用 Roslyn 获取当前打开的解决方案中的项目 编译它并从中运行方法 程序员可以修改该项目 我已从当前 VisualStudioWorkspace 成功编译了 Visual Studio 扩
  • 复制目录下所有文件

    如何将一个目录中的所有内容复制到另一个目录而不循环遍历每个文件 你不能 两者都不Directory http msdn microsoft com en us library system io directory aspx nor Dir
  • C 函数 time() 如何处理秒的小数部分?

    The time 函数将返回自 1970 年以来的秒数 我想知道它如何对返回的秒数进行舍入 例如 对于100 4s 它会返回100还是101 有明确的定义吗 ISO C标准没有说太多 它只说time 回报 该实现对当前日历时间的最佳近似 结
  • 相当于Linux中的导入库

    在 Windows C 中 当您想要链接 DLL 时 您必须提供导入库 但是在 GNU 构建系统中 当您想要链接 so 文件 相当于 dll 时 您就不需要链接 为什么是这样 是否有等效的 Windows 导入库 注意 我不会谈论在 Win
  • 对于某些 PDF 文件,LoadIFilter() 返回 -2147467259

    我正在尝试使用 Adob e IFilter 搜索 PDF 文件 我的代码是用 C 编写的 我使用 p invoke 来获取 IFilter 的实例 DllImport query dll SetLastError true CharSet
  • 为什么C++代码执行速度比java慢?

    我最近用 Java 编写了一个计算密集型算法 然后将其翻译为 C 令我惊讶的是 C 的执行速度要慢得多 我现在已经编写了一个更短的 Java 测试程序和一个相应的 C 程序 见下文 我的原始代码具有大量数组访问功能 测试代码也是如此 C 的
  • C# 使用“?” if else 语句设置值这叫什么

    嘿 我刚刚看到以下声明 return name null name NA 我只是想知道这在 NET 中叫什么 是吗 代表即然后执行此操作 这是一个俗称的 条件运算符 三元运算符 http en wikipedia org wiki Tern
  • 指针和内存范围

    我已经用 C 语言编程有一段时间了 但对 C 语言还是很陌生 有时我对 C 处理内存的方式感到困惑 考虑以下有效的 C 代码片段 const char string void where is this pointer variable l
  • 类型或命名空间“MyNamespace”不存在等

    我有通常的类型或命名空间名称不存在错误 除了我引用了程序集 using 语句没有显示为不正确 并且我引用的类是公共的 事实上 我在不同的解决方案中引用并使用相同的程序集来执行相同的操作 并且效果很好 顺便说一句 这是VS2010 有人有什么
  • 从 mvc 控制器使用 Web api 控制器操作

    我有两个控制器 一个mvc控制器和一个api控制器 它们都在同一个项目中 HomeController Controller DataController ApiController 如果我想从 HomeController 中使用 Dat

随机推荐

  • 内核模块与用户空间程序通信的最佳方式是什么?

    这个问题看起来很简单 但我想发送一个事件来通知我的用户空间程序模块缓冲区已准备好读取 例如 我的内核模块中有一个缓冲区 其数据将由用户空间程序消耗 如果所有数据都被消耗 内核模块必须在新数据到达时通知我的程序 这是生产者 消费者的典型问题
  • 验证字母输入上的文本

    任何人都在 TextBox 上使用 AngularJS 验证 这样就只能输入字母了 取决于你想要什么 字母和空格 ng pattern a zA Z s 字母无空格 ng pattern a zA Z
  • Dropzone:防止 addfile 两次

    我正在使用 dropzone 将图像上传到图库 我通过按钮提交 是否可以防止两次添加相同的文件 我不太确定是否检查名称或名称和尺寸 这是我的代码
  • EF Model First 的 1:1 关系问题

    我正在尝试使用 EF 开发一个模型优先的应用程序 我尝试了一切方法来实现分表模式和 1 1 关系 但看起来 EF 不允许我这样做 假设我确实使用 Model First 有没有一种方法可以建立 1 1 关系 而不会弄乱生成的文件和 EF 带
  • 调试时 msvsmon.exe 崩溃

    当我在 VS 2013 update 3 中调试时 msvsmon exe 在遇到断点时崩溃 它显示 调试器的工作进程 msvsmon exe 意外退出 调试将中止 我没有使用远程调试 是否可以关闭 msvsmon exe 以避免在调试时调
  • 如何改变点图的形状?

    我有一个具有以下基本结构的数据文件 Type Tm A 1 A 2 A 3 B 3 B 3 C 1 C 1 C 2 我正在使用它制作点图 ggplot data df aes x Tm fill Type geom dotplot binw
  • 加快 R 中固定宽度格式表的导入速度

    我正在从 R 中的固定宽度格式 txt 文件导入表格 该表大约有 100 个观测值和 200000 行 下面几行 11111 2008 7 31 21 2008 8 1 21 3 4 6 18 4 7 0 12 0 0 0 0 0 1 0
  • CFHTTP:第一个请求快,后续慢

    目前我在使用 CF10 的 CFHTTP 时遇到了很多麻烦 首先 我的测试脚本
  • Symfony2 学说强制转换为十进制

    我在 Symfony2 中使用 Sonata Admin Bundle 并有一个自定义过滤器 在数据库中 列是浮动的 无法更改 如果输入 1333 33 将不会有结果 一种解决方案是使用 CAST CAST o price AS DECIM
  • C for 循环突然停止[重复]

    这个问题在这里已经有答案了 我试图读取图中两个节点之间的距离并将其存储在数组中 但循环无法按预期工作 它突然停止了 Output Edge Number 4 Enter distance between two nodes Example
  • 如何保存具有列表视图的片段的状态

    这是一个情况 我想从片段 A gt B gt C 导航 B Fragment中有listview 在项目上单击我打开详细视图 C 片段 当然 我使用了替换方法并在从 B 到 C 的事务处理时添加了 addtoBackStack null 以
  • 如何更改 iOS 7 中 tabBarItems 的文本和图标颜色?

    如何更改 iOS 7 中 UITabBar 和 UITabBarItems 的文本和图标颜色 对于未选择的选项卡栏项目 默认的灰色文本看起来很暗且难以阅读 为此 您需要做两件事 1 如果要自定义TabBar本身 需要为tabBarContr
  • 使用 Spring Data 将 DBObject 插入 MongoDB

    我尝试使用 Spring Data 将以下 DBObject 插入 MongoDB BasicDBObject document new BasicDBObject document put country us document put
  • 在 Visual Studio 中使用 NLog 设置具有多个项目的 C# 解决方案

    我在 Visual Studio 2012 中的解决方案当前包含两个项目 DLL WPF 应用程序 需要 DLL 的方法 DLL 和 WPF 应用程序都使用NLog用于记录 目前每个项目都包含NLogDLL 本身 这是我不明白的地方 对我来
  • 背景图像未显示在 Heroku 中

    我在本地使用的 Heroku 网站的背景图像有问题 background image url background stripe png 有效 但部署后文件已损坏 我尝试过使用 background image image url back
  • VBA:如何仅保留字符串中的日期值?

    我有一个下面的字符串 想知道如何从中提取日期值并将它们存储在单独的单元格中 11AUG2016 更改 gggqqq2i8yj 29SEP2016 删除 tyijdg298 30SEP2016 添加 mkdjenb200 03OCT2016
  • 报告不确定性:给定平均值和标准误差,仅显示有效数字

    目的是显示多次观察的结果 而不需要 不必要的数字 即用 与给定一致的有效数字位数 不确定 For example if computed mean 123 45 and err 0 0012345 then the expected out
  • 如何使用 Golang 将文件添加到现有 zip 文件

    我们可以创建一个 zip 新文件并使用 Go 语言添加文件 但是 如何使用 GoLang 添加带有现有 zip 文件的新文件 如果我们可以使用Create函数 如何获取zip writer引用 有点困惑 经过更多分析 我发现 无法使用现有的
  • Mongoid 限制删除多个

    使用mongoid 如何删除前10000个文档error message字段是 Error not found 原生 mongo 查询将被愉快地接受 MongoDB 支持删除限制 删除命令从集合中删除文档 单个 删除命令可以包含多个删除规范
  • System.StackOverflowException WPF MVVM

    我正在尝试使用 MVVM 在 WPF 中创建一个简单的数字时钟 我有一个带有装订的标签 背后的代码很简单 每秒都会引发一个属性更改事件 并且我有一个 stackoverflow 异常 有人可以帮忙吗 public partial class