2010-07-11 231 views
0

新手問題給你。我有以下代碼。我得到一個錯誤,因爲一個對象必須傳遞給ClientRequest。但我不確定如何將流作爲對象傳遞。將流轉換爲對象?

TcpClient _client = _listener.AcceptTcpClient();
NetworkStream _clientStream = _client.GetStream(); ThreadPool.QueueUserWorkItem(ClientRequest, _clientStream);

感謝

+1

請爲ClientRequest添加代碼或至少簽名 – 2010-07-11 20:41:43

回答

0

爲的ClientRequest聲明,像這樣有什麼不妥,只要該代碼:

public void ClientRequest(Object state) { 
... 
} 
0

這個問題可能是你不能通過流作爲一個對象 - .net中的所有東西都是一個對象,因此投射到對象(這是「擴大」轉換,因此不需要指定)應該不是問題。

我的猜測是你的ClientRequest需要傳遞一個NetworkStream或其他東西,它不會得到 - 它會得到一個對象,然後你需要將它轉換爲NetworkStream以便使用它正常。

+0

基本上我想將網絡隊列傳遞給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

+0

@arbme:對。你只能傳遞一個對象。但是*一切*都是一個對象,所以你應該能夠傳遞任何你喜歡的東西。訣竅是,在你的函數中,你想把它轉換回你知道的東西 - 比如'NetworkStream ns =(NetworkStream)請求',並且在你的情況下使用'ns'而不是'request'。 – cHao 2010-07-11 21:16:42

+0

@arbme:另外,對於是傳遞一個流還是一個字節數組或者其他東西,你似乎有點困惑。演員陣容可能會幫助你理清這一點。 – cHao 2010-07-11 21:19:35