这篇文章主要围绕delphi–我应该如何将负值传递给SendMessage并在他们期望NativeUInt时执行?展开,旨在为您提供一份详细的参考资料。我们将全面介绍delphi–我应该如何将负值传递
这篇文章主要围绕delphi – 我应该如何将负值传递给SendMessage并在他们期望NativeUInt时执行?展开,旨在为您提供一份详细的参考资料。我们将全面介绍delphi – 我应该如何将负值传递给SendMessage并在他们期望NativeUInt时执行?,同时也会为您带来"@ionic-native/native-storage" has missing dependencies、(delphi)Perform,SendMessage,PostMessage三者區別、activemq 控制面板里的 Number Of Pending Messages、 Messages Enqueued、Messages Dequeued含、Android Handler 的 handleMessage ()、sendMessage ()、dispatchMessage () 的区别的实用方法。
本文目录一览:- delphi – 我应该如何将负值传递给SendMessage并在他们期望NativeUInt时执行?
- "@ionic-native/native-storage" has missing dependencies
- (delphi)Perform,SendMessage,PostMessage三者區別
- activemq 控制面板里的 Number Of Pending Messages、 Messages Enqueued、Messages Dequeued含
- Android Handler 的 handleMessage ()、sendMessage ()、dispatchMessage () 的区别
delphi – 我应该如何将负值传递给SendMessage并在他们期望NativeUInt时执行?
Result.X := ACustomMemo.Perform(EM_LINEFROMCHAR,-1,0);
Windows API声明“-1”是一个有效值,使其返回活动行.
但是,Delphi将此定义为NaiveUInt并且如果我尝试传递-1则会抱怨.
什么是最干净的解决方案?铸件?
解决方法
Result.X := ACustomMemo.Perform(EM_LINEFROMCHAR,WParaM(-1),LParaM(0));
顺便说一句,WParaM类型的delphi NativeUint定义是正确的,因为x86上的无符号32位和x64上的无符号64位.
"@ionic-native/native-storage" has missing dependencies
ionic引用native插件时,提示该错误,一般是下划线的包没有引入
执行一下下面的命令就好:npm install @ionic-native/core --save
(delphi)Perform,SendMessage,PostMessage三者區別
总结
以上是小编为你收集整理的(delphi)Perform,SendMessage,PostMessage三者區別全部内容。
如果觉得小编网站内容还不错,欢迎将小编网站推荐给好友。
activemq 控制面板里的 Number Of Pending Messages、 Messages Enqueued、Messages Dequeued含
activemq 控制面板里的 Number Of Pending Messages、 Messages Enqueued、Messages Dequeued含 博客分类: java
Number Of Consumers 消费者 这个是消费者端的消费者数量
Number Of Pending Messages 等待消费的消息 这个是当前未出队列的数量。可以理解为总接收数-总出队列数
Messages Enqueued 进入队列的消息 进入队列的总数量,包括出队列的。 这个数量只增不减
Messages Dequeued 出了队列的消息 可以理解为是消费这消费掉的数量
这个要分两种情况理解
在queues里它和进入队列的总数量相等(因为一个消息只会被成功消费一次),如果暂时不等是因为消费者还没来得及消费。
在 topics里 它因为多消费者从而导致数量会比入队列数高。
简单的理解上面的意思就是
当有一个消息进入这个队列时,等待消费的消息是1,进入队列的消息是1。
当消息消费后,等待消费的消息是0,进入队列的消息是1,出队列的消息是1.
在来一条消息时,等待消费的消息是1,进入队列的消息就是2.
没有消费者时 Pending Messages 和 入队列数量一样
有消费者消费的时候 Pedding会减少 出队列会增加
到最后 就是 入队列和出队列的数量一样多
以此类推,进入队列的消息和出队列的消息是池子,等待消费的消息是水流。
Android Handler 的 handleMessage ()、sendMessage ()、dispatchMessage () 的区别
sendMessage()
定义好 handler 后,在其他线程访问这个线程的 handler,调用 sendMessage () 发送信息给主线程的 handler。内部是通过消息队列的方式依次传递。
handleMessage()
在定义自己的 Handler 的时候都会重写 Handler 的 handleMessage () 方法来对拿到的消息进行处理,因此这个方法应该是运行在接收消息的线程的。(例如下载内容 -> 更新 UI,handleMessage () 运行在主线程)。 很无奈的是这个方法在父类 Handler 中就是一个 public 的方法,因此如果不小心在该写 sendMessage () 的地方写了 handleMessage (),就会造成 handleMessage () 中写的内容运行在子线程中,然后使用了导致修改 UI 失败等错误。 (类似于新建了一个线程,然后调用 run 方法去执行它的 Runnable 了,而没有执行 start 开辟新线程)
dispatchMessage()
dispatchMessage 的调用和 handleMessage 情况类似,内部实际上还是调用 handleMessage (),因此,直接调用也是无法回到主线程的。
代码示例
Thread t1= new Thread(new Runnable() {
@Override
public void run() {
handler.handleMessage(Message.obtain());
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
handler.sendMessage(Message.obtain());
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
handler.dispatchMessage(Message.obtain());
}
});
t1.setName("子线程");
t1.start();
@Override
public void handleMessage(@NonNull Message msg) {
Log.d(TAG, "handleMessage: handler里的线程:"+Thread.currentThread().toString());
}
运行可以看到结果如下: handleMessage: handler 里的线程:Thread [子线程,5,main] handleMessage: handler 里的线程:Thread [main,5,main] handleMessage: handler 里的线程:Thread [子线程,5,main] 证明只有 sendMessage () 才可以让消息正确传达到主线程。
【为啥要在发消息之间暂停一秒呢?】 因为 handleMessage 和 dispatchMessage 不牵涉到线程间的通信,速度要比 sendMessage 快,如果不加,那么运行结果就有可能变成 —— 我先调用了 sendMessage (),但是另外两个先出结果了。
关于delphi – 我应该如何将负值传递给SendMessage并在他们期望NativeUInt时执行?的介绍现已完结,谢谢您的耐心阅读,如果想了解更多关于"@ionic-native/native-storage" has missing dependencies、(delphi)Perform,SendMessage,PostMessage三者區別、activemq 控制面板里的 Number Of Pending Messages、 Messages Enqueued、Messages Dequeued含、Android Handler 的 handleMessage ()、sendMessage ()、dispatchMessage () 的区别的相关知识,请在本站寻找。
本文标签: