public partial class frmMain : Form, IFormManager
{
4 public frmMain()
{
InitializeComponent();
8 } private void frmMain_Load(object sender, EventArgs e)
{
Init();
}
private void Init()
{
SocketServer socketServer = new SocketServer(this);
}
/// <summary>
/// 数据写入日志
/// </summary>
/// <param name="str">数据</param>
public void LogOutPut(string str)
{
this.logTextBox.AppendText(DateTime.Now.ToString("yyy-MM-dd HH:mm:ss") + ":" + str+"\r\n");
}
}
public class ServerLog
{
private static IFormManager form;
public ServerLog(IFormManager _form)
{
form = _form;
}
/// <summary>
/// 传值到日志
/// </summary>
/// <param name="_passValue"></param>
public static void PassValueToLog(string _passValue)
{
if (_passValue != string.Empty)
form.LogOutPut(_passValue);
}
}
 public class SocketServer
{
ServerLog serverLog;
public SocketServer(IFormManager _form)
{
serverLog = new ServerLog(_form);
}
}
public interface IFormManager
{
void LogOutPut(string str);
}

在frmMain中,界面需要调用LogOutPut方法,客户端收到服务端发送的也需要调用,不能循环引用,所以使用接口来传值。

在客户端收到服务端发送的数据时,使用ServerLog.PassValueToLog(“收到的数据:”+str)。

这只是自己做的项目需要用到的,写个随笔,技术有限,有能指正我的错误的,我来更正

winform不能循环引用,使用接口传值到界面的更多相关文章

  1. block的用法和循环引用

    一.block在OC中的用法可以分为大概一下几种. 1>用于成员属性,保存一段代码,可以替代代理传值. 比如说,创建一个ViewController控制器,点击屏幕就跳转到ModalViewCo ...

  2. C#winForm调用WebService的远程接口

    Web Service 的创建简单编码.发布和部署 上一篇详细概述了WebService的创建,编码,发布和部署,那么作为客户端的程序如何访问远程端的WebService 接下来看一下具体步骤:   ...

  3. JPA一对多循环引用的解决

    说是解决,其实不是很完美的解决的,写出来只是想记录一下这个问题或者看一下有没有哪位仁兄会的,能否知道一二. 下面说说出现问题: 问题是这样的,当我查询一个一对多的实体的时候,工具直接就爆了,差不多我就 ...

  4. Block的使用及循环引用的解决

    Block是一个很好用的东西,这篇文章主要来介绍:1.什么是Block?2.Block的使用?3.Block的循环引用问题及解决. 1.什么是Block? 说这个问题之前,我先来说一下闭包(Closu ...

  5. WinForm LED循环显示信息,使用定时器Threading.Timer

    原文:WinForm LED循环显示信息,使用定时器Threading.Timer 这里用一个示例来演示timer如何使用.示例:LED屏幕显示描述:这个示例其实很简单,LED屏幕上显示3个信息:  ...

  6. C#项目间循环引用的解决办法,有图有真相

    C#项目间循环引用的解决办法,有图有真相 程序间的互相调用接口,c#禁止互相引用,海宏软件,20160315 /// c#禁止互相引用,如果项目[订单]中有一个orderEdit单元,要在项目[进销存 ...

  7. 使用gc、objgraph干掉python内存泄露与循环引用!

    Python使用引用计数和垃圾回收来做内存管理,前面也写过一遍文章<Python内存优化>,介绍了在python中,如何profile内存使用情况,并做出相应的优化.本文介绍两个更致命的问 ...

  8. Jmeter(七)_if控制器+循环控制器+计数器控制接口分支

    最近查阅了一下网上关于if控制器的文章,大同小异,几乎找不到原创,于是决定自己写一篇 下午测试接口,遇到了一个审核的流程.逻辑很简单,就是审核不通过之后返回去继续修改再提交,然后再审核,直到通过为止. ...

  9. 前后台分离开发时遇到循环引用问题"$ref"

    1. 遇到的问题 { "errMsg": "", "data": { "baseinfo": { "freeT ...

随机推荐

  1. 如何升级gcc

    https://blog.csdn.net/zhaomax/article/details/87807711 1.环境:arm架构的centos6.5系统服务器 2.查看当前的gcc版本:gcc  - ...

  2. 转-web自动化测试,定位不到元素的原因及解决方案

    1.动态id定位不到元素 分析原因:每次打开页面,ID都会变化.用ID去找元素,每次刷新页面ID都会发生变化. 解决方案:推荐使用xpath的相对路径方法或者cssSelector查找到该元素. 2. ...

  3. Java 判断字符串是否包含某个字符

    // 判断不为静态栏目的文章 if (e.getCategory().getName().indexOf("静态") == -1) { articleList2.add(e); } ...

  4. [rope大法好] STL里面的可持久化平衡树--rope

    简单用法: #include <ext/rope> using namespace __gnu_cxx; int a[1000]; rope<int> x; rope<i ...

  5. JAVA SE Lesson 1

    1.  类是一种抽象的概念,对象是类的一种具体表示形式,是具体的概念.先有类,然后由类来生成对象(Object).对象又叫做实例(Instance).2.  类由两大部分构成:属性以及方法.属性一般用 ...

  6. Linux下多线程复制文件(C)

    Linux下实现多线程文件复制,使用<pthread.h>提供的函数: int pthread_create(pthread_t *thread,const pthread_attr_t ...

  7. SetTimeout()多次运行函数后越来越快的问题

    问题原因很简单,但是由于代码逻辑问题,一直没有考虑到: 网上有个帖子说的很明白:原帖入口 假如你在0时刻点击了一下按钮,那么500ms时数字会跳一下,1000ms会再跳一下,依次类推,1500,200 ...

  8. SSRF漏洞的挖掘思路与技巧

    什么是SSRF? SSRF(Server-Side Request Forgery:服务器端请求伪造) 是一种由攻击者构造形成由服务端发起请求的一个安全漏洞.一般情况下,SSRF攻击的目标是从外网无法 ...

  9. ASP.NET CORE 管道模型及中间件使用解读

    说到ASP.NET CORE 管道模型不得不先来看看之前的ASP.NET 的管道模型,两者差异很大,.NET CORE 3.1 后完全重新设计了框架的底层,.net core 3.1 的管道模型更加灵 ...

  10. h5单页面布局

    前段时间做了一个PC端单页面应用 GitHub因为项目开始的比较仓促,加上本人前端经验特别少,虽然项目大体完成了,但是页面布局确成立它的硬伤...为了填补心里落差,专门做了一个h5的单页面布局,代码很 ...