Я новичок в 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. public override bool Initialize ()
Вызов функции Register принимает объект ReceiveDelegate в качестве второго параметра.Итак, как я могу отправить функцию (получить), когда это просто функция?Как это работает?
2. public void Receive (данные байта [])
Что происходит в случае if?Как вызывать работу?
3. void DataReceived (строковые данные)
Что происходит в случае if (строка за строкой)?