我正在使用BeginnReceive方法和ReceiveCompleted事件处理程序来侦听和处理来自MSMQ的消息。
我已将BeginReceive方法放在ReceiveCompleted事件处理程序的开头。
看起来它在我的控制台应用程序中运行良好。 现在,消息是异步处理的。
问题:
这对于线程安全是否安全?
我看到的所有示例都将BeginReceive调用放到已完成的事件处理程序的末尾。所以我问自己在完成处理程序的最开头是否有任何问题?
<?xml version="1.0" encoding="utf-8"?>
<ImageView
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/refresh"
android:padding="10dp" />
答案 0 :(得分:1)
是的,使用async / await的方法将安全地处理线程。使用这些关键字的异步方法将非常谨慎。 更具体地说我的回答是事件处理程序方法messagereceived(方法名称应该以异步方式结束)调用并等待async方法,如果在此方法中有任何阻塞工作,它将挂起的线程并进一步执行,直到其他工作完成并且返回,就像在这种情况下,processmessage async可能是阻塞的,并且可以进一步执行调用但是我没有看到你利用它,因为在调用processmessageasync之后你没有做任何事情,所以如果你问的话,线程会执行这个如果它是线程安全的,但异步方法没有得到充分利用