Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
"Обернул" вызовы методов оформ вызвами их же делегатов... 29.12.05 06:45 Число просмотров: 2863
Автор: void <Grebnev Valery> Статус: Elderman
|
"Обернул" вызовы методов оформ вызвами их же делегатов....
Наверное, так по-правильному (следует из публикаций в инет). Но всё равно остаётся червоточина... Положим, если из вторичного потока только читаются или изменяются переменные-члены класса окна ( типа string m_tmp; int m_count и т.д.), которые заведомо не ответствены за перерисовку окна, или заведомо не могут быть изменены из двух потоков "одновременно". Не пойму, зачем MS рекомендует использовать асинхронные вызовы??? Ведь и так работает. И по логике вещей должно работать, ибо нет таких данных, к которым оба потока могут обратиться, нарушив синхронизацию.
delegate void ShowProgressInfoDelegat( int bytesSent );
public void ShowProgressInfo( int bytesSent )
{
if ( progressBarSending.InvokeRequired == false )
{
if ( bytesSent >= progressBarSending.Maximum)
{
progressBarSending.Maximum = bytesSent + (int )(((float)bytesSent )* 1.2 );
}
progressBarSending.Value = bytesSent;
frmMain frm = (frmMain)FindForm();
frm.SetFileSendingInfo( m_curSendingFile, bytesSent );
}
else
{
ShowProgressInfoDelegat progressBarDelegate = new ShowProgressInfoDelegat( ShowProgressInfo );
this.BeginInvoke( progressBarDelegate, new object[] { bytesSent} );
}
}
Спасибо.
|
|
|