ccp*_*ava 5 c# sockets multithreading asynchronous
基于我的读取和测试,使用异步套接字,套接字本身可以使用状态对象(IAsyncResult结果)传递,如果将套接字存储为私有字段,它将由回调方法捕获.
我想知道如何在BeginXXX和ReceiveXXX之间保存IAysnResult?它在我看来,在BeginXXX调用和方法结束后,如果没有对它的引用,则由GC处理状态对象.
在私有字段的情况下,如何在线程之间共享私有字段?(据我所知,使用默认线程池中的线程执行回调,该线程将被视为新线程.)
非常感谢,希望问题本身很清楚.
GC 不是处置对象,而是释放没有引用的对象使用的内存。客户端代码应该处理对象,GC 永远不会这样做。
IAysnResult在线程池中执行的委托中仍然有一个引用,因此在回调方法完成之前,GC 不会收集它。
私有成员始终对执行线程可见,因此正在执行包含类的方法的所有线程都可以访问私有套接字字段。