Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Multithreading 未捕获异常:BlackBerry上的事件调度线程不允许执行阻止操作_Multithreading_Blackberry_Java Me_Thread Safety - Fatal编程技术网

Multithreading 未捕获异常:BlackBerry上的事件调度线程不允许执行阻止操作

Multithreading 未捕获异常:BlackBerry上的事件调度线程不允许执行阻止操作,multithreading,blackberry,java-me,thread-safety,Multithreading,Blackberry,Java Me,Thread Safety,我有一个HttpConnection线程类。当ı停止httpConnection时,我显示此消息。 ı应该如何停止httpConnection 黑莓输出控制台: RuntimeException blocking operation not permitted on event dispatch thread net_rim_cldc-10 EventThreadCheck throwException 0x3434 net_rim_cldc_io_tcp Protocol <p

我有一个HttpConnection线程类。当ı停止httpConnection时,我显示此消息。 ı应该如何停止httpConnection

黑莓输出控制台:

RuntimeException
blocking operation not permitted on event dispatch thread
net_rim_cldc-10
 EventThreadCheck
 throwException
 0x3434
net_rim_cldc_io_tcp
 Protocol
 <private>
 0x18B8
net_rim_cldc_io_tcp
 Protocol
 outputStreamClosed
 0xB2D
net_rim_cldc_io_tcp
 TcpOutputStream
 close
 0x40BF
net_rim_os-2
 ClientProtocol
 close
 0x154E
CepVizyon-2
 Http
 cancel
 0x174F
CepVizyon-2
 Camera
 cancel
 0x6E7
CepVizyon
 ViewCam
 close
 0xE79
net_rim_cldc-7
 Screen
 onClose
 0x5DAC
net_rim_cldc-7
 Screen
 keyCharUnhandled
 0x5C58
net_rim_cldc-9
 MainScreen
 keyCharUnhandled
 0x23D7
net_rim_cldc-7
 Screen
 dispatchKeyEvent
 0x51DB
net_rim_cldc-7
 Screen
 processKeyEvent
 0x718D
net_rim_cldc-7
 UiEngineImpl
 processMessage
 0x9E3C
net_rim_cldc-4
 Application
 processNextMessage
 0x1073
net_rim_cldc-4
 Application
 enterEventDispatcher
 0x775
CepVizyon-2
 CepVizyonMain
 main
 0x1175
我的屏幕课程的一部分:

public void close() {
        super.close();
        StaticVar.ActiveCam.cancel();
//      CameraListScreen screen = new CameraListScreen();
//      UiApplication.getUiApplication().pushScreen(screen);
//
    }
摄像机类的一部分/*ActiveCam的取消在这里/:


您必须仅从事件线程使用屏幕

 //safely (recommended)
 Application.getApplication().invokeLater(new Runnable() {
        public void run() {
            //your code here
         }
 });


看起来您的HttpConnection是从后台(非UI)线程访问的,这很好。但是,您的UI直接调用close(),这可能会阻塞。你应该考虑生成另一个线程来做关闭()。< /p>你有一个代码,这和UI有关。此代码必须在同步{}或调用器{}中。您的问题不在httpConnection中。问题与显示器有关,这些是问题的反面。这就是如何从非事件线程访问UI。
// finishes connection.
    public void cancel() {
        setConnected(false);
        if (mjpeghttp != null) {
            mjpeghttp.cancel();
            //mjpeghttp.interrupt();
            //mjpeghttp = null;

        }
            }
 //safely (recommended)
 Application.getApplication().invokeLater(new Runnable() {
        public void run() {
            //your code here
         }
 });
//fast 
synchronized(Application.getEventLock()) {
   //your code here
 }