J'ai essayé de voler une partie du code livré avec IP en action et, suite à des problèmes, j'ai même pris le temps de lire le livre!Embedded IronPython - Dispatcher Problème
Je reçois l'erreur 'Attendez-vous, obtenez la fonction' lorsque j'utilise le code suivant. Pour votre information, je passe dans une référence à une zone de texte WPF donc je devrais avoir un régulateur sur mon élément d'interface utilisateur
J'ai enlevé tous les trucs de lecture du tuyau de filetage juste pour laisser le code « test »:
import System
import System.IO
import Avacta.Optim.Server.WebServices
import Avacta.Optim.Server.DataModel
import sys
import clr
import time
from System import Console
from System.Threading import Thread, ThreadStart
def SetDispatcher(ui_element):
global dispatcher # needed else "Exception: 'NoneType' object has no attribute 'BeginInvoke'"
dispatcher = ui_element.Dispatcher
def Dispatch(function, *args):
dispatcher.BeginInvoke(lambda *_: function(*args))
def GetDispatchFunction(function):
return lambda *args: Dispatch(function, *args)
class ListOutput:
def __init__(self, textbox):
self.textbox = textbox
def write(self, string):
Dispatch(self.addText, string) # error: "expect Delegate, got Function"
#self.addText(string) # ok works fine w-w/o dispatcher stuff
def addText(self, string):
textbox.AppendText(string)
if textbox != None:
listout = ListOutput(textbox)
sys.stdout = listout
SetDispatcher(textbox)
print "Define running"
#running = True
Thread.Sleep(0)
time.sleep(2)
print "Start The Comms Thread..."
#comms_t = Thread(ThreadStart(run_comms))
#comms_t.Start()
Thread.Sleep(0)
time.sleep(2)
Des indices appréciés.
AndyF.