我想为我的事件的消费者提供通过 修改缓冲区的可能性EventArgs
,但我无法正确固定解决方案。我在 C/C++ 方面做好了充分的准备,但在 C# 方面缺乏经验。
我的事件定义是:
public class ResponseEventArgs : EventArgs
{
public byte[] Buffer { get; set; }
public ResponseEventArgs(byte[] buffer)
{
this.Buffer = buffer;
}
}
public delegate void ResponseEventHandler(object sender, ResponseEventArgs e);
public event ResponseEventHandler Response;
我提出这个事件:
byte[] buffer = new byte[BUFSIZE];
Response(this, new ResponseEventArgs(buffer));
一个示例事件处理程序,我在其中转换为 UTF8、替换并返回字节,例如:
void Response_Test(object sender, ResponseEventArgs e)
{
string stringBuf = System.Text.Encoding.UTF8.GetString(e.Buffer);
stringBuf = stringBuf.Replace("A", "B");
e.Buffer = new byte[stringBuf.Length * sizeof(char)];
System.Buffer.BlockCopy(stringBuf.ToCharArray(), 0, e.Buffer, 0,
e.Buffer.Length);
}
从事件返回时,字节缓冲区仍然是旧内容。