草庐IT

asio_handler_invoke

全部标签

kotlin - 为什么必须用invoke调用类成员函数类型?

funtest(){classTest(valfoo:((Double,Double)->Double)?)valtest=Test(null)if(test.foo!=null)test.foo(1.0,2.0)}上面的代码产生了错误:Kotlin:Referencehasanullabletype'((Double,Double)->DoubleArray)?',useexplicit'?.invoke()'tomakeafunction-likecallinstead.如果我遵循错误建议并将调用更改为test.foo?.invoke(1.0,2.0),代码会编译,但Intelli

android - Kotlin: 'length' 类型的表达式 'Int' 不能作为函数调用。找不到函数 'invoke()'

我正在尝试解决旧kotlin项目中的问题。但问题是我无法编译代码。我尝试在AndroidStudio和IntelliJ中编译和运行。我遇到了同样的错误。以下是错误:Error:(174,25)Expression'length'oftype'Int'cannotbeinvokedasafunction.Thefunction'invoke()'isnotfoundError:(176,60)Unresolvedreference:charAtError:(148,67)Expression'size'oftype'Int'cannotbeinvokedasafunction.Thefu

android - java.lang.RuntimeException : Can't create handler inside thread that has not called Looper. 准备();

这个问题在这里已经有了答案:Can'tcreatehandlerinsidethreadthathasnotcalledLooper.prepare()(30个回答)关闭2年前。我有一个运行线程的Android应用。我希望Toast消息与消息一起显示。当我这样做时,我得到以下异常:Logcat跟踪:FATALEXCEPTION:Timer-0java.lang.RuntimeException:Can'tcreatehandlerinsidethreadthathasnotcalledLooper.prepare()atandroid.os.Handler.(Handler.java:

android - Android中Looper、Handler和MessageQueue是什么关系?

我查看了Looper、Handler和MessageQueue的官方Android文档/指南。但我无法得到它。我是android新手,对这些概念非常困惑。 最佳答案 一个Looper是一个消息处理循环:它从MessageQueue读取和处理项目。.Looper类通常与HandlerThread结合使用。(Thread的子类)。一个Handler是一个实用类,它有助于与Looper进行交互——主要是通过将消息和Runnable对象发布到线程的MessageQueue中。当一个Handler被创建时,它被绑定(bind)到一个特定的Lo

Android:什么时候应该使用 Handler(),什么时候应该使用 Thread?

当我需要异步运行某些东西时,例如长时间运行的任务或使用网络的逻辑,或出于任何原因,启动新线程并运行它可以正常工作。创建Handler并运行它也可以。有什么不同?我应该什么时候使用每一个?使用Handler而不是Thread的优点/原因是什么?PS。-为了这个问题,让我们忽略AsyncTask。-Handler().postDelayed用例对我来说很清楚,为了这个问题,让我们假设我需要立即开始任务。 最佳答案 如果你正在做的任何事情都是“重”的,那么你应该在一个线程中做它。如果您没有在自己的线程中明确启动它,那么它将在主(UI)线程

android - 取消 handler.postdelayed 进程

我正在使用handler.postDelayed()在我的应用程序的下一阶段发生之前创建一个等待期。在等待期间,我会显示一个带有进度条和取消按钮的对话框。我的问题是我找不到在时间过去之前取消postDelayed任务的方法。 最佳答案 我这样做是为了发布一个延迟的可运行文件:myHandler.postDelayed(myRunnable,SPLASH_DISPLAY_LENGTH);然后删除它:myHandler.removeCallbacks(myRunnable); 关于andro

C++ Boost ASIO 简单的周期性定时器?

我想要一个非常简单的周期性计时器来每50毫秒调用一次我的代码。我可以制作一个一直休眠50毫秒的线程(但这很痛苦)...我可以开始研究用于制作计时器的LinuxAPI(但它不是可移植的)...我希望喜欢使用boost..我只是不确定这是否可能。boost是否提供此功能? 最佳答案 一个非常简单但功能齐全的示例:#include#includeboost::asio::io_serviceio_service;boost::posix_time::secondsinterval(1);//1secondboost::asio::dead

c++ - boost::asio 完全断开连接

有时boost::asio似乎在我想要它之前断开连接,即在服务器正确处理断开连接之前。我不确定这是怎么可能的,因为客户端似乎认为它完全发送了消息,但是当服务器发出错误时,它甚至没有读取消息头......在测试期间,这可能只发生五分之一,服务器收到客户端关闭消息,并干净地断开客户端。错误:“现有连接被远程主机强行关闭”客户端断开连接:voiddisconnect(){boost::system::error_codeerror;//justcreatesasimplebufferwithashutdownheaderboost::uint8_t*packet=createPacket(P

c++ - Boost.ASIO 性能不佳

我在Windows上使用boost::asio进行了一个非常简单的服务器/客户端性能测试,它的性能似乎很差。我希望我只是错误地使用了该库,并希望得到任何建议。我有一个session类,它先写入一个消息长度,然后再写入一个消息,然后等待读取一个消息长度,然后再读取一条消息,并且不停地一遍又一遍地这样做。但是,当我在自己的计算机上本地运行它时,我会获得极快的性能;当我在一台计算机上运行服务器并在另一台计算机上运行客户端时,即使在同一网络上,性能也会降低,读取/写入操作需要1秒。服务器源代码文件如下:#include#include#include#includeusingnamespace

c++ - Boost::asio - 如何中断阻塞的 tcp 服务器线程?

我正在开发一个多线程应用程序,其中一个线程充当从客户端接收命令的tcp服务器。线程使用Boost套接字和接受器等待客户端连接,从客户端接收命令,将命令传递给应用程序的其余部分,然后再次等待。代码如下:voidServerThreadFunc(){usingboost::asio::ip::tcp;boost::asio::io_serviceio_service;tcp::acceptoracceptor(io_service,tcp::endpoint(tcp::v4(),port_no));for(;;){//listenforcommandconnectiontcp::socke