You generally can't do that kind of stuff from a different thread... After fighting with this for a while I eventually realized that it's not too hard to avoid the extra thread: instead of doing the work there, just stick it in a closure that is handed to `queue-callback'. (This is based on lessons learned the hard way in an application that does a lot of this kind of stuff...)
On Sun, Aug 24, 2014 at 5:00 PM, Dmitry Cherkassov <[email protected]> wrote: > Hi. I am asyncrhonously insert text strings to editor% (from another thread) > > The problem is that i sometimes get this exception from object of editor% > class: > > sequence-contract-violation: negative: method insert cannot be called, > except in states (unlocked) > > I've tried to loop while editor is locked calling these functions > http://docs.racket-lang.org/gui/editor___.html#%28meth._%28%28%28lib._mred%2Fmain..rkt%29._editor~3c~25~3e%29._locked-for-flow~3f%29%29 > > But it seems they do not work for me (do not return if editor is > locked) and still that exception in caused. > > I've fallen back to ugly loop then. > > (define retry (call/cc (lambda (k) k))) > > (with-handlers ([exn:fail? > (lambda (ex) > (sleep 1) > (retry retry))]) > (send editor insert message)) > > > Is there a better way? > > P.S Full source code for that stuff is available there: > ------------------------------------------------------------------------------- > > https://github.com/lehitoskin/blight/blob/master/msg-history.rkt#L143 > > `add-recv-message' is called by `on-friend-message': > https://github.com/lehitoskin/blight/blob/master/blight.rkt#L956 > > which is called back by `callback-friend-message' C function: > https://github.com/lehitoskin/libtoxcore-racket/blob/master/functions.rkt#L489 > ---------------------------------------------------------------------------------- > > Thank you. > > -- > With best regards, > Dmitry > ____________________ > Racket Users list: > http://lists.racket-lang.org/users -- ((lambda (x) (x x)) (lambda (x) (x x))) Eli Barzilay: http://barzilay.org/ Maze is Life! ____________________ Racket Users list: http://lists.racket-lang.org/users

