如何解决是否从主线程调用TIdTCPServer.OnConnect?
我不知道在TIdTCPServer.OnConnect
或OnDisconnect
事件中是否可以从主线程访问数据。是从主线程还是其他线程调用此方法?我想在TMemo
中记录IP,然后启用或禁用某些按钮。
解决方法
TIdTCPServer
是一个多线程组件。其OnConnect
,OnDisconnect
,OnExecute
和OnException
事件均在由事件的TIdContext
对象表示的辅助线程的上下文中触发。该线程在TIdContext.Connection
属性中管理客户端TCP连接。
OnListenException
事件是在另一个工作线程的上下文中触发的,该工作线程侦听客户端连接并创建TIdContext
线程。
是的,TIdTCPServer
事件处理程序在访问UI控件和其他共享数据时必须与主线程同步。
我相信,它是在其自己的线程上下文中调用的。更好地使用Synchronize()或Queue()进行保护...示例:
def Database_connection():
try:
# PostgreSQL connection
Postgres_connection = psycopg2.connect(user="postgres",password="password",host="127.0.0.1",port="5432",database="Maps")
Postgres_cursor = Postgres_connection.cursor()
except (Exception,psycopg2.Error) as error1:
print("Error while connecting to PostgreSQL",error1)
return Postgres_connection,Postgres_cursor
def Database_connection_close():
Postgres_connection=Database_connection()
Postgres_connection.close()
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。