小编sha*_*sen的帖子

WPF MVVM DataBindings停止更新

我正在使用MVVM模式的中型WPF应用程序.ViewModels用于INotifyPropertyChanged刷新各自的视图.

这种方法很有效,除了一个问题:当这个应用程序长时间运行(3-7天)时,视图(整个应用程序中的每个视图!)突然停止更新它们的绑定属性.

如果我在ViewModels中设置一个断点,那么它们就会快乐地走开,呼唤PropertyChanged就像没有错.但是,如果我在View绑定的ViewModel对象的getter中设置断点,则永远不会调用getter!

我很难过,甚至不知道如何正确调试这个问题.我已检查Visual Studio输出窗口是否存在数据绑定错误,但一切看起来都很正常.几乎就像WPF数据绑定引擎在后台崩溃一样.此应用程序还监视未处理的异常(AppDomain.UnhandledExceptionDispatcher.UnhandledException),但不会抛出任何异常.

简介:经过很长一段时间后,Views停止更新其数据绑定,但ViewModel仍在调用PropertyChanged事件.

任何建议???

c# data-binding wpf mvvm inotifypropertychanged

20
推荐指数
1
解决办法
1310
查看次数

将无符号long long转换为C中的double

我意识到这个问题可能取决于处理器,但希望有人可以指出我正确的方向.对于我的生活,我无法弄清楚如何将表示纳秒的无符号long long int转换为表示C中的秒的double(我使用32位big-endian PowerPC 405进行此特定测试,以及GNU C99编译器).

我试过了:

unsigned long long int nanoseconds = 1234567890LLU;
double nanoseconds_d = nanoseconds*1e-9;
Run Code Online (Sandbox Code Playgroud)

也:

nanoseconds_d = ((double) nanoseconds)*1e-9;
Run Code Online (Sandbox Code Playgroud)

对于这两种情况,我只得到0.我在这里做错了什么?

编辑添加完整的例子

#include <stdio.h>
#include <stdlib.h>

int
main( int argc, char *argv[] )
{
    unsigned long long int nanoseconds = 1234567890LLU;
    double nanoseconds_d = nanoseconds * 1e-9;
    printf("%g\n", nanoseconds_d);

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

MAKEFILE

SRCS    = simple.c    
INCLUDE := -I$(PWD)            
CFLAGS  := -O0 -g3 -Wall -fmessage-length=0 -mhard-float -fsigned-char -D_REENTRANT
LIBS    := -lc

OBJS = $(SRCS:.c=.o)
PROG = $(SRCS:.c=).out …
Run Code Online (Sandbox Code Playgroud)

c double c99 type-conversion uint64

7
推荐指数
1
解决办法
1万
查看次数