帮助学员解释代码
本文关键字:代码 解释 帮助 | 更新日期: 2023-09-27 17:57:39
我是C#和框架的新手,我正在尝试弄清楚一些代码是如何工作的(代码没有问题)。它是一个客户端/服务器应用程序,从客户端向服务器发送一些文本,然后在文本框中接收并显示相同的字符串。下面的代码来自客户端及其表单。这里只包括从服务器接收字符串的内容。我列入了框架中的一些意见。
public class TestModuleMobile : PreCom.Core.ModuleBase, PreCom.Core.IForm
{
public delegate void ReceiveDelegate(string data);
public event ReceiveDelegate DataReceived;
public void Receive(byte[] data)
{
string text = Encoding.UTF8.GetString(data, 0, data.Length);
if (DataReceived != null)
DataReceived.Invoke(text);
}
public override bool Initialize()
{
PreCom.Application.Instance.Communication.Register(99, Receive);
// Register(uint receiverID, RecieveDelegate receiver): Called by modules to register for communication.
//
// Parameters:
// receiverID:
// Module Id
// receiver:
// The module receive function that will be called by the framework when data
// arrives to specific module. (This method should return as soon as possible
// to avoid timeouts)
_isInitialized = true;
return true;
}
}
public partial class TestModuleMobileForm : PreCom.Controls.PreComForm
{
TestModuleMobile _module;
public TestModuleMobileForm(TestModuleMobile module)
{
_module = module;
_module.DataReceived += new TestModuleMobile.ReceiveDelegate(DataReceived);
InitializeComponent();
}
void DataReceived(string data)
{
if (InvokeRequired)
{
ThreadStart myMethod = delegate { DataReceived(data); };
this.BeginInvoke(myMethod);
return;
}
listBox1.Items.Insert(0, data);
this.preComInput21.Text = "";
}
}
问题:
1.公共重写bool Initialize()
对Register的函数调用将ReceiveDelegate对象作为第二个参数。那么,当函数只是一个函数时,我如何向它发送函数(Receive)呢?这是怎么回事
2.public void Receive(byte[]数据)
if情况下会发生什么?调用是如何工作的
3.void DataReceived(字符串数据)
if情况下(逐行)会发生什么?
这里有许多关于Stackoverflow的相关帖子,您可以浏览这些帖子来更好地了解代理。一旦你通读了它们,重新看看你的代码,你会发现它更容易理解。
提示:请查看此网页右侧的所有相关帖子。
您需要对代表有充分的了解,因此您最好从按顺序阅读以下内容开始:
- 学员(C#编程指南)
- 代理教程
- C#/.NET中的委托和事件