110,536
社区成员
发帖
与我相关
我的任务
分享
public struct 中国
{
ClientWebSocket 客户端;
public async void 初始化()
{
序号 = 0;
客户端 = new ClientWebSocket();
await 客户端.ConnectAsync(new Uri("wss://plus-wsp.btcchina.com/"), CancellationToken.None);
var 缓冲 = new byte[10240];
while (客户端.State == WebSocketState.Open)
{
var 结果 = await 客户端.ReceiveAsync(new ArraySegment<byte>(缓冲), CancellationToken.None);
解析(JObject.Parse(Encoding.Default.GetString(缓冲, 0, 结果.Count)));
}
订阅行情();//这里的代码执行不到
}
void 请求(string 指令)//调用时跳错,说客户端没有被实例化,但是初始化时已经实例化了啊。
{
客户端.SendAsync(new ArraySegment<byte>(Encoding.Default.GetBytes(指令)), WebSocketMessageType.Text, true, new CancellationToken());
}
}
件事发现代码第15行永远运行不到;public struct 中国
{
ClientWebSocket 客户端;
public async void 初始化()
{
序号 = 0;
if (客户端 != null)
客户端.Dispose();
客户端 = new ClientWebSocket();//wss://real.okcoin.cn:10440/websocket/okcoinapi 币行
await 客户端.ConnectAsync(new Uri("wss://plus-wsp.btcchina.com/"), CancellationToken.None);
监听();
订阅行情();
}
async void 监听()
{
var 缓冲 = new byte[10240];
while (客户端.State == WebSocketState.Open)
{
var 结果 = await 客户端.ReceiveAsync(new ArraySegment<byte>(缓冲), CancellationToken.None);
解析(JObject.Parse(Encoding.Default.GetString(缓冲, 0, 结果.Count)));
}
}
async void 请求(string 指令)
{
await 客户端.SendAsync(new ArraySegment<byte>(Encoding.Default.GetBytes(指令)), WebSocketMessageType.Text, true, new CancellationToken());
}
}
我把监听写成一个方法,不影响后续代码执行了。但是void 请求被调用时,会说客户端没有别实例化。这是为什么呢?之前初始化()已经被调用过了,按理说 客户端 已经被new了呀。