小编sqe*_*z3r的帖子

轮询数千个TCP套接字

我需要通过TCP在专有协议上连接数千个客户端以周期性地获取数据.我需要在C#中编写一个.NET服务器应用程序.

第一次尝试是为每个tcp套接字创建一个自己的线程,它可以工作,但需要大量的cpu使用.

我发现使用.NET threadpool会更好.据我了解(http://msdn.microsoft.com/en-us/library/ms973903.aspx)我可以使用计时器,以便让每个套接字在给定的时间内(如1秒)周期性地获取数据.这对我来说不起作用,因为一旦连接被打开,套接字会超时,因为在打开套接字再次转动之前,还有许多套接字必须打开.

另一个尝试是使用异步回调.这对我有用,但我不知道如何让套接字循环获取数据???

.net c# tcp threadpool

5
推荐指数
1
解决办法
4222
查看次数

如何确定对象是否继承自抽象泛型类

我有一个通用的抽象类,我派生自:

abstract class SuperClass<T>
where T : SuperDataClass

abstract class SuperDataClass
Run Code Online (Sandbox Code Playgroud)

数据类型仅限于SuperDataClass,因此每个具体数据类型都必须从SuperDataClass继承.最后我有一对SuperClass和SuperDataClass继承者,例如:

class DataClassA : SuperDataClass
class ClassA : SuperClass<DataClassA>

class DataClassB : SuperDataClass
class ClassB : SuperClass<DataClassB>
Run Code Online (Sandbox Code Playgroud)

如何在不知道可能的数据类型的情况下检查对象,例如ClassA是否从SuperClass继承?

我尝试了以下,但不起作用:

if (testObject.GetType().IsAssignableFrom(typeof(SuperClass<SuperDataClass>))) {
    Console.WriteLine("The test object inherits from SuperClass");
}
Run Code Online (Sandbox Code Playgroud)

那么if语句需要怎么样?

c# generics inheritance types

5
推荐指数
1
解决办法
2724
查看次数

iOS应用程序在Core Location回调机制中崩溃

我在分析我的崩溃日志时遇到问题.当我点击应用程序图标启动应用程序时,iPhone有时会崩溃.该应用已在后台"运行",但它不活跃.这是符号化的崩溃日志:

Thread 0 Crashed:
0   libobjc.A.dylib     0x33479470 objc_msgSend + 28
1   CoreLocation                    0x3436f68e -[CLLocationManager onClientEvent:supportInfo:] + 98
2   CoreLocation                    0x3436f804 OnClientEvent + 16
3   CoreLocation                    0x3436b522 CLClientInvokeCallback(__CLClient*, CLClientEvent, __CFDictionary const*) + 42
4   CoreLocation                    0x3436cf74 CLClientHandleDaemonDataRegistration(__CLClient*, CLDaemonCommToClientRegistration const*, __CFDictionary const*) + 668
5   CoreLocation                    0x3436d4c8 CLClientHandleDaemonData(__CFMessagePort*, long, __CFData const*, void*) + 212
6   CoreFoundation                  0x33a813fe __CFMessagePortPerform + 242
7   CoreFoundation                  0x33a556f8 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 20
8   CoreFoundation                  0x33a556bc __CFRunLoopDoSource1 + 160
9   CoreFoundation                  0x33a47f76 __CFRunLoopRun + 514
10  CoreFoundation                  0x33a47c80 CFRunLoopRunSpecific …
Run Code Online (Sandbox Code Playgroud)

iphone cocoa-touch core-location crash-log ios

2
推荐指数
1
解决办法
2899
查看次数