我想給我的事件消費者修改緩衝區的可能性,通過EventArgs
,但我無法正確固定解決方案。我在C/C++中做好了充分的準備,但在C#中缺乏經驗。在EventArgs中返回修改後的字節[]緩衝區
我的事件定義是:
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);
}
當從事件返回時,字節的緩衝區仍與舊的內容。
[參數傳遞的C#(http://yoda.arachsys.com/csharp/parameters.html) – Steve