|
Непонятка с callback
|
|||
---|---|---|---|
#18+
привет! есть winforms приложение [CallbackBehavior(UseSynchronizationContext = false)] public partial class Form2 : Form, ICalcServiceCallback { private SynchronizationContext _context; private CalcServiceClient _proxy; public Form2() { InitializeComponent(); _context = SynchronizationContext.Current; InstanceContext callbackContext = new InstanceContext(this); _proxy = new CalcServiceClient(callbackContext); } public void AddListboxItem(object id) { listBox1.Items.Add(id); } public void OnCallback(int id) { SendOrPostCallback setValue = new SendOrPostCallback(AddListboxItem); _context.Post(setValue, id); } private void checkBox1_CheckedChanged(object sender, EventArgs e) { var res = _proxy.DoWork(9); listBox1.Items.Add("total:" + res); } } и есть служба interface IMyContractCallback { [OperationContract(IsOneWay = true)] void OnCallback(int id); } [ServiceContract(CallbackContract = typeof(IMyContractCallback), SessionMode=SessionMode.Required)] public interface ICalcService { [OperationContract] int DoWork(int id); } [ServiceBehavior(ConcurrencyMode = ConcurrencyMode.Reentrant, InstanceContextMode = InstanceContextMode.PerSession)] public class CalcService : ICalcService { public int DoWork(int id) { for (int i = 0; i < id; i++) { IMyContractCallback callback = OperationContext.Current.GetCallbackChannel<IMyContractCallback>(); callback.OnCallback(id); } return id + 4; } } почему у меня сначала приходит результат работы функции DoWork из сервиса, а потом уже заполняется listbox1 (ф-я AddListboxItem)? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.06.2011, 22:13 |
|
|
start [/forum/topic.php?fid=19&msg=37299588&tid=1397433]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
43ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
42ms |
get tp. blocked users: |
2ms |
others: | 17ms |
total: | 152ms |
0 / 0 |