Многопоточные WinForms в C # - PullRequest
       26

Многопоточные WinForms в C #

1 голос
/ 27 ноября 2009

Кто-нибудь может порекомендовать книги или другие онлайн-ресурсы для многопоточных Windows Forms в C #? В основном мне интересно узнать больше об этой теме, особенно в контексте приложения с графическим интерфейсом, которое отправляет сообщения и в фоновом режиме прослушивает ответы от сервера.

Большое спасибо, MK

Ответы [ 4 ]

3 голосов
/ 27 ноября 2009

Я рекомендую вам посмотреть ретланг http://code.google.com/p/retlang/, он изменил способ кодирования моих приложений на фундаментальном уровне. Быстрый и грязный пример, который может компилироваться или не компилироваться, который lissens для некоторой строки сообщения сервера и представляет ее в текстовом поле.

using Retlang.Channels;
using Retlang.Fibers;
using Retlang.Core;
public partial class FooForm: Form 
{
    PoolFiber _WorkFiber; //backround work fiber
    FormFiber _FormFiber; //this will marshal the messages to the gui thread
    Channel<string> _ServerMessageChannel;
    bool _AbortWork = false;
    public FooForm()
    {
        InitializeComponent();
        _ServerMessageChannel= new Channel<string>();
        _WorkFiber = new PoolFiber();
        _FormFiber = new _Fiber = new FormFiber(this,new BatchAndSingleExecutor());
        _WorkFiber.Start(); //begin recive messages
        _FormFiber .Start(); //begin recive messages
        _WorkFiber.Enqueue(LissenToServer);
        _ServerMessageChannel.Subscribe(_FormFiber,(x)=>textBox1.Text = x);
    }
    private LissenToServer()
    {
         while(_AbortWork == false)
         {
            .... wait for server message
            string mgs = ServerMessage();
            _ServerMessageChannel.Publish(msg);

         }
    }
}
3 голосов
/ 27 ноября 2009

Я не знаю, есть ли какие-нибудь конкретные книги по WinForms и многопоточности. Существуют книги, в которых обсуждается модель асинхронного программирования .NET, которая широко используется в программировании WinForms и WPF.

Попробуйте Программирование компонентов .NET Джувала Лууи (OReilly Press), а также CLR через C # Джеффри Рихтера (Microsoft Press). Это должно начать вас.

2 голосов
/ 27 ноября 2009

Я бы второй CLR через C # , но Параллельное программирование в Windows Джо Даффи делает многопоточность и параллелизм гораздо более глубокими, если это то, что вы ищете.

РЕДАКТИРОВАТЬ: Программирование Windows Forms 2.0 Крисом Селлсом также охватывает эту тему и является очень хорошей (и читаемой ) общей книгой WinForms, если у вас ее еще нет.

1 голос
/ 27 ноября 2009

Билл Вагнер Более эффективный C #: 50 конкретных способов улучшить ваш C # обращается к этой теме, наряду со многими другими полезными.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...