WCF,从服务访问 Windows 窗体控件

2023-12-02

我有一个托管在 Windows 窗体内的 WCF 服务。

如何从我的服务中的方法访问表单的控件?

例如我有

public interface IService    {
    [ServiceContract]
    string PrintMessage(string message);
}

public class Service: IService    
{
    public string PrintMessage(string message)
    {
        //How do I access the forms controls from here?
        FormTextBox.Text = message;
    }
}

首先,ServiceContract 属性应该位于接口上,而不是 PrintMessage() 方法上。

使用示例的更正版本,您可以这样做。

[ServiceContract]
public interface IService
{
    [OperationContract]
    string PrintMessage(string message);
}
public class Service : IService
{
    public string PrintMessage(string message)
    {
        // Invoke the delegate here.
        try {
            UpdateTextDelegate handler = TextUpdater;
            if (handler != null)
            {
                handler(this, new UpdateTextEventArgs(message));
            }
        } catch {
        }
    }
    public static UpdateTextDelegate TextUpdater { get; set; }
}

public delegate void UpdateTextDelegate(object sender, UpdateTextEventArgs e);

public class UpdateTextEventArgs
{
    public string Text { get; set; }
    public UpdateTextEventArgs(string text)
    {
        Text = text;
    }
}

public class MainForm : Form
{
    public MainForm()
    {
        InitializeComponent();

        // Update the delegate of your service here.
        Service.TextUpdater = ShowMessageBox;

        // Create your WCF service here
        ServiceHost myService = new ServiceHost(typeof(IService), uri);
    }
    // The ShowMessageBox() method has to match the signature of
    // the UpdateTextDelegate delegate.
    public void ShowMessageBox(object sender, UpdateTextEventArgs e)
    {
        // Use Invoke() to make sure the UI interaction happens
        // on the UI thread...just in case this delegate is
        // invoked on another thread.
        Invoke((MethodInvoker) delegate {
            MessageBox.Show(e.Text);
        } );
    }
}

这本质上是 @Simon Fox 建议的解决方案,即使用委托。可以这么说,这希望只是在骨头上增添一些肉。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

WCF,从服务访问 Windows 窗体控件 的相关文章

  • 向 Nhibernate 发出 SQL 查询

    如何将此 SQL 查询发送给 Nhibernate SELECT Customer name FROM Company INNER JOIN Customer ON Company CompanyId Customer CompanyId
  • 推导指南中的引用和值之间的差异

    考虑类型A template
  • 如何修复此错误“GDI+ 中发生一般错误”?

    从默认名称打开图像并以默认名称保存 覆盖它 我需要从 Image Default jpg 制作图形 将其放在 picturebox1 image 上并在 picurebox1 上绘制一些图形 它有效 这不是我的问题 但我无法保存 pictu
  • 单元测试一起运行时失败,单独运行时通过

    所以我的单元测试遇到了一些问题 我不能只是将它们复制并粘贴到这里 但我会尽力而为 问题似乎是 如果我一项一项地运行测试 一切都会按预期进行 但如果我告诉它一起运行测试 则 1 5 将通过 TestMethod public void Obj
  • 如何访问另一个窗体上的ListView控件

    当单击与 ListView 所在表单不同的表单中的按钮时 我试图填充 ListView 我在 Form1 中创建了一个方法以在 Form2 中使用 并将参数传递给 Form1 中的方法 然后填充 ListView 当我调试时 我得到了传递的
  • 生成(非常)大的非重复整数序列而不进行预洗牌

    背景 我编写了一个简单的媒体客户端 服务器 我想生成一个不明显的时间值 随从客户端到服务器的每个命令一起发送 时间戳中将包含相当多的数据 纳秒分辨率 即使它不是真正准确 因为现代操作系统中计时器采样的限制 等 我想做的 在 Linux 上
  • 用于检查项目文件中的项目变量和引用路径的 api

    我正在研究一个 net application VS2010 与 x 没有 解和变量号这些解决方案中的项目数量 我需要检查项目属性 特定于一定数量的项目 是否同质 并且检查 验证构建期间的参考路径 有没有一个API是这样的吗 如果没有 我该
  • 使用 JNI 从 Java 代码中检索 String 值的内存泄漏

    我使用 GetStringUTFChars 从使用 JNI 的 java 代码中检索字符串的值 并使用 ReleaseStringUTFChars 释放该字符串 当代码在 JRE 1 4 上运行时 不会出现内存泄漏 但如果相同的代码在 JR
  • 如何从代码隐藏文件中的asp.net用户控件注册(调用)jQuery函数?

    如何从代码隐藏文件中的asp net用户控件注册 调用 jQuery函数 您可以使用ClientScriptManager RegisterStartupScript http msdn microsoft com en us librar
  • 如何将整数转换为 void 指针?

    在 C 中使用线程时 我面临警告 警告 从不同大小的整数转换为指针 代码如下 include
  • 加密和解密图像.net

    谁能给我一个使用 net 和 asp net 加密和解密图像的示例 当我将图像作为二进制数据保存到 SQL Server 中时 我希望对图像进行加密 包含这些名称空间 using System IO using System Securit
  • Visual Studio 中的测试单独成功,但一组失败

    当我在 Visual Studio 中单独运行测试时 它们都顺利通过 然而 当我同时运行所有这些时 有些通过 有些失败 我尝试在每个测试方法之间暂停 1 秒 但没有成功 有任何想法吗 在此先感谢您的帮助 你们可能有一些共享数据 检查正在使用
  • 无需安装即可部署 Expression Encoder SDK

    我试图在使用 Microsoft Expression Encoder 3 SDK 时证明一个概念 我正在尝试将 SDK 部署到我的托管 Web 服务器 以了解更多关于它是否有效以及还需要安装什么的信息 我无法在服务器上进行任何操作 以下是
  • 将 log4net 与 Autofac 结合使用

    我正在尝试将 log4net 与 Autofac 一起使用 我粘贴了这段代码http autofac readthedocs org en latest examples log4net html http autofac readthed
  • std::async 与重载函数

    可能的重复 std bind 重载解析 https stackoverflow com questions 4159487 stdbind overload resolution 考虑以下 C 示例 class A public int f
  • 如何从main方法调用业务对象类?

    我已将代码分为业务对象 访问层 如下所示 void Main Business object public class ExpenseBO public void MakeExpense ExpensePayload payload var
  • C++ 密码屏蔽

    我正在编写一个代码来接收密码输入 下面是我的代码 程序运行良好 但问题是除了数字和字母字符之外的其他键也被读取 例如删除 插入等 我知道如何避免它吗 特q string pw char c while c 13 Loop until Ent
  • 如何在按钮单击时模拟按键 - Unity

    我对 Unity 中的脚本编写非常陌生 我正在尝试创建一个按钮 一旦单击它就需要模拟按下 F 键 要拾取一个项目 这是我当前的代码 在编写此代码之前我浏览了所有统一论坛 但找不到任何有效的东西 Code using System Colle
  • 如何将 Roslyn 语义模型返回的类型符号名称与 Mono.Cecil 返回的类型符号名称相匹配?

    我有以下代码 var paramDeclType m semanticModel GetTypeInfo paramDecl Type Type Where paramDeclType ToString returns System Col
  • 防止在工厂方法之外实例化对象

    假设我有一个带有工厂方法的类 class A public static A newA Some code logging return new A 是否可以使用 a 来阻止此类对象的实例化new 那么工厂方法是创建对象实例的唯一方法吗 当

随机推荐

  • geom_jitter 的高度/宽度参数与对数刻度相互作用

    在探索一些数据时遇到了这个问题 感觉像是意外的行为 所以我想发布一下 geom jitter采用高度 宽度参数来确定抖动的宽度 默认值为 40 当您添加对数刻度时 这 40 似乎会应用于原始值 但是 如果您想调整此参数 该值将在对数转换后应
  • 如何在 SAS 中获取 PROC REPORT 以显示没有观测值的 ACROSS 变量中的值?

    在 SAS 中使用 PROC REPORT 如果某个 ACROSS 变量有 5 种不同的值可能性 例如 1 2 3 4 5 但在我的数据集中没有观察到该变量等于 5 我该如何让报告显示 5 的列并为具有该值的观测值显示 0 目前 我的 PR
  • 是否还有其他具有非零索引数组位置的常见“类 c”或非“类 c”语言? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心以获得指导 C 编程语言被称为零索引数
  • 如何在角度独立组件中使用动画

    我正在尝试设置一个有角度的项目 独立组件 动画 Component selector my app standalone true imports CommonModule BrowserAnimationsModule template
  • 发送点击消息到另一个应用程序进程

    我有一个场景 我需要将点击事件发送到独立的应用程序 我使用以下代码启动了该应用程序 private Process app app new Process app StartInfo FileName app path app StartI
  • 有没有办法在Python中引用当前函数?

    我想要一个函数来引用它自己 例如是递归的 所以我做了类似的事情 def fib n return n if n lt 1 else fib n 1 fib n 2 大多数时候这都很好 但是fib实际上并不指代其自身 它指的是绑定fib在封闭
  • 将 System.Drawing.Bitmap 缩放到给定大小,同时保持纵横比

    我想扩展一个System Drawing Bitmap至少小于某个固定的宽度和高度 这是为了在网站上生成图片库的缩略图 所以我想保持纵横比相同 我有一些解决方案 但似乎没有一个真正能满足我的需要 它们围绕基于保持宽度或高度相同但不改变两者的
  • 模拟按键 C#

    I want to simulate F5 key press in my C program When IE is open I want to be able refresh my website automatically 我怎样才能
  • Java 中的动态泛型类型

    如果我有一个使用泛型类型的类 例如 public class Record
  • 谷歌地图 API 从 v2 升级到 v3,建议

    我在我的网络应用程序中完全集成了谷歌地图版本 2 具有获取方向 集群标记 选项卡式信息窗口 上下文菜单 右键单击 等功能 该实现的设计非常糟糕 导致了一些问题 所以现在我需要修改核心实现以更好的设计 我正在考虑升级到 google 地图 A
  • 不区分大小写的列表搜索

    我有一个清单testList包含一堆字符串 我想添加一个新字符串到testList仅当列表中尚不存在时 因此 我需要对列表进行不区分大小写的搜索并使其高效 我不能使用Contains因为这没有考虑外壳 我也不想用ToUpper ToLowe
  • Symfony2 表单中的数据对象与需要填写的内容不完全匹配

    我们有监控服务 我们的监控单元可以监视某些机器 我正在创建一个表单来在 Symfony2 中注册一台新机器 所以我们有机器实体 id 机器名称 显示器编号 And the 监控实体 id 序列号 对于新机器 客户需要填写form with
  • Internet Explorer 显然不支持 MouseEvent movingX 属性

    我正在开发一个需要兼容 IE 9 及以上版本的应用程序 我在 MouseEvent 对象上使用 movingX 属性 但是该 MouseEvent 对象在 Internet Explorer 9 或 11 中没有 movingX 属性 我浏
  • 如何使用php在mysql中生成下一个自动递增编号?

    我试图使用 php 获取 mysql 中的下一个自动递增数字 我尝试了这样的方法 但是 当删除任何行时 这不起作用 我希望你明白我的意思 我怎样才能使用 php 来做到这一点 您无法执行此操作来获取表数据 您必须使用 php 获取表状态才能
  • 为什么Python 2.7的namedtuple实现__dict__?

    The namedtuplePython 2 7 中的实现实现 dict 我很困惑这是在做什么 为什么我们需要做一个特别的 dict 如果已经定义了属性 C tmp gt python Python 2 7 12 Anaconda 4 1
  • 从 Python 数据中学习二元决策图 (BDD)

    是否可以从数据中学习二元决策图 BDD 以机器学习的方式 如果是这样 怎么办 背景 我在 Python 中看到过一些工具可以完成此任务 例如决策树 DT scikit学习 但我还没有看到任何 BDD 举个例子 我想做的事情如下 前三列对应于
  • 在 SQL Server 中读取并递增 int 值

    我需要使用 C 在 SQL Server 2008 中自动读取并递增一个值 例如 我必须插入 批次 的项目 为此我需要最后一批的编号 并确保没有其他人获得该编号 因此 我有一张仅包含最后批号的表格 并找到一种只需一步即可获取和更新编号的方法
  • 使用ClassLoader方法检索类下的所有资源作为输入流

    我的问题是一个你可能认为很常见的问题 但到目前为止我还没有找到解决方案 在 Tomcat 5 5 下构建 Java Web 应用程序 尽管要求它可以部署在任何地方 例如在 WebLogic 环境下 因此需要将资源作为流加载 良好的实践表明资
  • 为什么 System.Transactions TransactionScope 默认隔离级别可序列化

    我只是想知道什么是好的使用可序列化的原因作为创建时的默认隔离级别系统 交易 交易范围 因为我想不出任何 而且似乎你无法通过更改默认值web app config所以你总是必须在你的代码中设置它 using var transaction T
  • WCF,从服务访问 Windows 窗体控件

    我有一个托管在 Windows 窗体内的 WCF 服务 如何从我的服务中的方法访问表单的控件 例如我有 public interface IService ServiceContract string PrintMessage string