【问题标题】:.NET How to communicate with Windows Forms app from Sharpshell COM Extension?.NET 如何从 Sharpshell COM 扩展与 Windows 窗体应用程序通信?
【发布时间】:2016-02-22 07:49:42
【问题描述】:

我有一个 Windows 窗体应用程序(同步应用程序,如 DropBox 和 Google Drive)以及我使用 SharpShell 创建的 COM 组件(Shell 扩展),它为 Windows 文件系统添加了功能。我的问题是 COM 如何与 Windows 窗体应用程序通信。例如

当我在我的 Windows 窗体应用程序中创建一个单例时,COM 扩展看不到这个 Singleton(null),因为我认为它是一个不同的进程。我的问题是我想要 COM 进程(C# 代码)如何与 Windows 窗体应用程序(也是 c# 代码)通信的最佳实践,或者我希望两个应用程序都能看到我的单例。

public class FileLoggerDoubleCheckLocking : BaseFileLogger
{
    private static FileLoggerDoubleCheckLocking _instance;
    private static readonly object _lock = new object();

    private FileLoggerDoubleCheckLocking()
    {
    }

    public static FileLoggerDoubleCheckLocking Instance
    {
        get
        {
            if (_instance == null)
            {
                lock (_lock)
                {
                    if (_instance == null)
                    {
                        _instance = new FileLoggerDoubleCheckLocking();
                    }
                }
            }
            return _instance;
        }
    }
}

【问题讨论】:

  • 您必须使用进程互操作机制,例如套接字、命名管道或 WCF。

标签: c# singleton ipc sharpshell


【解决方案1】:

谢谢,我已经使用 WCF 命名管道解决了这个问题 WCF Named Pipes

【讨论】:

  • 关于它的完整示例?
猜你喜欢
  • 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
相关资源
最近更新 更多