我需要通过TCP在专有协议上连接数千个客户端以周期性地获取数据.我需要在C#中编写一个.NET服务器应用程序.
第一次尝试是为每个tcp套接字创建一个自己的线程,它可以工作,但需要大量的cpu使用.
我发现使用.NET threadpool会更好.据我了解(http://msdn.microsoft.com/en-us/library/ms973903.aspx)我可以使用计时器,以便让每个套接字在给定的时间内(如1秒)周期性地获取数据.这对我来说不起作用,因为一旦连接被打开,套接字会超时,因为在打开套接字再次转动之前,还有许多套接字必须打开.
另一个尝试是使用异步回调.这对我有用,但我不知道如何让套接字循环获取数据???
我有一个通用的抽象类,我派生自:
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语句需要怎么样?
我在分析我的崩溃日志时遇到问题.当我点击应用程序图标启动应用程序时,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) c# ×2
.net ×1
cocoa-touch ×1
crash-log ×1
generics ×1
inheritance ×1
ios ×1
iphone ×1
tcp ×1
threadpool ×1
types ×1