c# - 在 C# 中的多个对象之间共享一个实例化类

标签 c# wpf

我目前有一个类,在我启动程序时实例化它。该类本身将创建一个新线程并开始搜索来自路由器的广播。

除了 MainWindow 之外,我还有其他窗口需要能够访问存储在此类实例中的数据。但是,我不确定其他窗口如何引用此数据。

有没有其他方法可以存储此类的实例,以便在应用程序范围内访问它?我需要它在应用程序的其余部分启动时立即启动,因此(对我而言)在第一个窗口中实例化该类似乎是合乎逻辑的。

namespace Lalu_WPF
{
    public partial class MainWindow : Window
    {
        // data storage for program
        public FindRouter finder = new FindRouter();

        public MainWindow()
        {
......

最佳答案

不要创建单例(注意大写字母)。它在多线程环境(可变单例)中容易出错并且不利于测试。

您有什么要求?

您必须在一个应用程序中有一个对象还是在整个 CLR 中有一个对象?

我赌第一个。

在您的 App 类 (App.xaml.cs) 中创建一个对象,然后通过 getter 访问它

App MyApplication = ((App)Application.Current);
MyApplication.Router;

关于c# - 在 C# 中的多个对象之间共享一个实例化类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5480625/

相关文章:

c# - 继承的 Windows 窗体奇怪行为

wpf - 如何将 DataGridTemplateColumn.Visibility 绑定(bind)到 DataGrid.ItemsSource 之外的属性?

c# - 如何找到 MemoryCache 的大小,最好是通过编程方式?

c# - wpf 数据网格复选框列 : how to enable/disable checkboxes

wpf - WPF KeyBinding Key 可以有多个替代值吗?

c# - 如何防止 DataGridTemplateColumn 根据某些条件进入编辑模式?

c# - 忽略 WPF 应用程序中的 Alt+F4

c# - 如何在 MigraDoc 库中设置文档方向(针对所有页面)?

c# - 文件关联导致 Clickonce 安装失败

c# - 使用 ServiceConfiguration (Azure) 中的连接字符串自定义 DbContext