新手問題給你。我有以下代碼。我得到一個錯誤,因爲一個對象必須傳遞給ClientRequest。但我不確定如何將流作爲對象傳遞。將流轉換爲對象?
TcpClient _client = _listener.AcceptTcpClient();
NetworkStream _clientStream = _client.GetStream(); ThreadPool.QueueUserWorkItem(ClientRequest, _clientStream);
感謝
新手問題給你。我有以下代碼。我得到一個錯誤,因爲一個對象必須傳遞給ClientRequest。但我不確定如何將流作爲對象傳遞。將流轉換爲對象?
TcpClient _client = _listener.AcceptTcpClient();
NetworkStream _clientStream = _client.GetStream(); ThreadPool.QueueUserWorkItem(ClientRequest, _clientStream);
感謝
爲的ClientRequest聲明,像這樣有什麼不妥,只要該代碼:
public void ClientRequest(Object state) {
...
}
這個問題可能是不你不能通過流作爲一個對象 - .net中的所有東西都是一個對象,因此投射到對象(這是「擴大」轉換,因此不需要指定)應該不是問題。
我的猜測是你的ClientRequest需要傳遞一個NetworkStream或其他東西,它不會得到 - 它會得到一個對象,然後你需要將它轉換爲NetworkStream以便使用它正常。
基本上我想將網絡隊列傳遞給ClientRequest函數來讀取和寫入客戶端。但ThreadPool.QueueUserWorkItem只會讓我傳遞一個對象。 void ClientRequest(object request) { byte[] response = ObjectToByteArray(request); Console.WriteLine("\nClients request:\n{0}\n", Encoding.ASCII.GetString(request)); }
即時通訊新的這與我:) –
arbme
2010-07-11 21:00:01
@arbme:對。你只能傳遞一個對象。但是*一切*都是一個對象,所以你應該能夠傳遞任何你喜歡的東西。訣竅是,在你的函數中,你想把它轉換回你知道的東西 - 比如'NetworkStream ns =(NetworkStream)請求',並且在你的情況下使用'ns'而不是'request'。 – cHao 2010-07-11 21:16:42
@arbme:另外,對於是傳遞一個流還是一個字節數組或者其他東西,你似乎有點困惑。演員陣容可能會幫助你理清這一點。 – cHao 2010-07-11 21:19:35
請爲ClientRequest添加代碼或至少簽名 – 2010-07-11 20:41:43