gpt4 book ai didi

c# - 在 WPF 之外使用 Freezable 类的任何 "Gotchas"?

转载 作者:行者123 更新时间:2023-11-30 15:49:13 24 4
gpt4 key购买 nike

我一直在研究并发性,并从更“线程安全”的角度看待事物。 WPF(或者实际上是 System.Windows.Freezable 等)有一个 freezable 类,它可以提供“冰棒不变性”。有没有人尝试过在 WPF/Silverlight 之外使用它,使用它会更好,还是自己动手/使用别人的更好?我知道那里有一些不错的。

最佳答案

您不应在 WPF 外部的 System.Windows 中使用 Freezable 类型。

这样做的原因是您创建了对 WindowBase.dll(或定义了 Freezable 的位置)的依赖项。在没有直接访问 UI 的情况下,这样的引用不应该存在于“模型项目”中。

但是,您可以轻松编写自己的 Freezable 基类代码。

我在一个应用程序中使用了以下接口(interface),我想在其中创建需要复杂启动的线程安全对象(它是循环引用):

public interface IFreezable
{
bool CanFreeze
{
get;
}
bool IsFrozen
{
get;
}

void Freeze();
}

请注意 CanFreeze 属性:我决定使用它是因为我想在卡住之前验证 Freezables - 我认为不给客户这样做的机会并不好。

Freezables 的概念在我看来是一个不错的想法,它丰富了多线程应用程序中的工具面板。

关于c# - 在 WPF 之外使用 Freezable 类的任何 "Gotchas"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1954665/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com