Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Программирование в среде .NET (ASP.NET,ADO.NET) на C#/VB.NET

Автор: BaluBig
Дата сообщения: 14.02.2008 16:33
Lihonosov
А в чем проблема? Берешь прогрессбар, кладешь на форму Если проблема в том, что действие тебе не подконтрольно (например, выполняем запрос к СУБД, сколько он будет выполняться - никто не знает), прогрессбар прийдется крутить "от фонаря", лишь бы пользователю было видно, что программа не висит. Для этого можно воспользоваться BackgroundWorker (писал о нем сегодня уже) и выполнять длительную операцию в отдельном потоке, а в основном потоке крутить прогрессбар пока не выполнится фоновая операция. При это нужно иметь в виду, что прямое обращение к элементам GUI из другого потока (отличного от того, в котором этот GUI создавался) запрещено. Сейчас при нарушении этого правила сразу будет исключение, раньше просто малопонятные глюки происходили...
Автор: V0lt
Дата сообщения: 14.02.2008 18:32
BaluBig

Цитата:
При это нужно иметь в виду, что прямое обращение к элементам GUI из другого потока (отличного от того, в котором этот GUI создавался) запрещено.

а можно поподробнее о способах как это правильно делать (хотя бы ссылку на русское описание)
...
у меня в проекте по кнопке вызывается функция в отдельном потоке, которая изменяет контрол на главной форме через Инвоки, а вот как определить завершился ли предыдущий запуск у меня не получается
Автор: BaluBig
Дата сообщения: 14.02.2008 19:16
V0lt
Держи статью. А что за проблема с инвоками, можно подробнее и с кодом?
Автор: recvezitor
Дата сообщения: 15.02.2008 06:42
Стоит задача сделать что то вроде обработчика urloв. К примеру если в строке забить http://host/category1/list/

http://host/category2/list/

http://host/category3/list/

То браузер должен перенаправить пользователя на одну и ту же страницу например Category_overview.aspx?CategoryID=1. Создавать виртуаьные директории для всех категорий это не разумно. А как и где лучше сделать перенаправление на нужную страницу

Автор: EZH
Дата сообщения: 15.02.2008 09:13
recvezitor
Так тебя что интересует то? Обработка строк, само перенаправление или что?

Делается это в Global.asax, там смотри Request.RawUrl, перенаправляй через Response.Redirect/Server.Transfer...
Автор: recvezitor
Дата сообщения: 15.02.2008 10:30
все нашел ссылку где это подробно описано http://www.donhost.ru/html/urlrewriting.htm
Автор: V0lt
Дата сообщения: 15.02.2008 18:56
BaluBig

Цитата:
А что за проблема с инвоками, можно подробнее и с кодом?

Проблема в понимании. Например, я не совсем понимаю зачем я должен писать конструкции типа

Код:
if (treeView_Folders.InvokeRequired == true)
{
treeView_Folders.BeginInvoke(new MethodInvoker(delegate() {Update_tree ();} ));
}
else
{
Update_tree();
}
Автор: fvgrod
Дата сообщения: 16.02.2008 03:10
Добрый день. Подскажите как сделать под Visual 2003 C## Таймер.

Вроде пример от майкровофта нашел, работает... а вот как самому собрать с нуля так и не разобрался.

Помогите пожалуйста!
Автор: eLLoco
Дата сообщения: 16.02.2008 13:04
fvgrod
чем не нравятся System.Timers.Timer, System.Threading.Timer и Windows.Forms.Timer?

Добавлено:
И хватит уже Си Шарп называть Си Шарп-Шарпом
Автор: fvgrod
Дата сообщения: 16.02.2008 13:19
eLLoco

Нравяться, я суть вопроса не утчнил в сообщении:
Нужно, что бы секунды отображались онлайн в каком нибудь label.
Автор: eLLoco
Дата сообщения: 16.02.2008 13:25
Метод в лоб - цепляем к событию Elapsed Tick таймера следующий обработчик:

Код: MyLabel.Text = DateTime.Now.Seconds.ToString();
Автор: lllapoklyak
Дата сообщения: 16.02.2008 13:28
На моем ноутбуке стоит Виста. Разумеется я администратор. Но почему-то вижуал студия 2005 с этим не согласна.
Я пытаюсь открыть старый проект, получить доступ к IIS и мне выдается сообщение :
"you must be a member of the Administration group on the local computer to access the IIS metabase"
Я уже даже в свойствах экзешника вижуал студии поставила галочку "всегда запускать с правами администратора", но не помогает :(
Никто не сталкивался?
Автор: eLLoco
Дата сообщения: 16.02.2008 13:34
lllapoklyak
Сталкивался, но следующие действия помогали:
1. Правой кнопкой на ярлыке Студии - Запустить как администратор.
2. Свойства ярлыка поменять на вкладке Совместимость (Запускать как администратор).

Если не помогает, можно думать в сторону настройки IIS, может там чего криво выставлено.
Автор: rafshan713
Дата сообщения: 16.02.2008 13:43
Вопрос:
пытаюсь написать программку содержащую одну форму с несколькими кнопками на С# (Visual Studio 2008 - Express Edition) под Windows CE 4.2 .NET, установленную на промышленном компьютере, при попытке запустить под данную ОС скомпилированный ехе-ник вылезает следующая ошибка:

"File or assembly name 'System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089', or one of its dependencies, was not found."

При том что консольные приложения написанные в той же среде запускаются без проблем.

На промышленном компьютере стоит следующее по:
Windows CE 4.2 .NET
.NET Compact Framework 2 SP1

процессор на промышленном компьютере - VIA с архитектурой x86.

При компиляции программы выставляю соответствующую версию framework (v. 2.0).

Возможно кто-то что-то знает поданному вопросу?

ЗЫ: Ранее программы под эту ОС и на этом языке не писал, поэтому заранее извиняюсь если вопрос не корректен.
Автор: EZH
Дата сообщения: 16.02.2008 14:01
fvgrod

Цитата:
Нужно, что бы секунды отображались онлайн в каком нибудь label.

Онлайн?! Я надеюсь не на aspx-странице? Мучать сервер для показа секунд - это будет просто кощунство! А если 1000 человек одновременно откроет страницу - 1000 запросов на сервер в секунду? Тут только JavaScript.

Или это ты так просто выразился и речь идет все-таки о WinForms?
Автор: fvgrod
Дата сообщения: 16.02.2008 15:55
EZH

На WinForms пытаюсь сделать, что то наподобие секундомера.
Автор: Ru55
Дата сообщения: 17.02.2008 15:47
Посоветуйте DB Engine компонент для .NET с шифрованием данных. (Аналогичные компоненты на Delphi - VistaDB, Absolute Database)
Автор: BaluBig
Дата сообщения: 17.02.2008 16:54
V0lt
Проверять InvokeRequired нужно в тех случаях, когда заранее не известно, в каком потоке будет выполняться этот код, в основном потоке формы или в каком-то другом. Если ответ на этот вопрос известен заранее, то соответственно проверка и ветвление не нужно. Кстати, BeginInvoke - это начало асинхронного вызова, по-моему в твоем случае надо бы бы использовать просто синхронный Invoke.
Автор: V0lt
Дата сообщения: 17.02.2008 19:07
BaluBig
немного почитал rsdn

Цитата:
http://www.rsdn.ru/article/dotnet/CSThreading2.xml
Превосходное решение для управления рабочими потоками в приложениях Windows Forms состоит в использовании BackgroundWorker. Этот класс-обертка для рабочих потоков умеет уведомлять о ходе выполнения операции и ее завершении, и автоматически вызывает Control.Invoke там, где это нужно.

если все так радужно как пишут, то возможно BackgroundWorker для меня лучший выход
...
...
нагло врут, без инвоков получаю InvalidOperationException


Цитата:
Кстати, BeginInvoke - это начало асинхронного вызова, по-моему в твоем случае надо бы бы использовать просто синхронный Invoke.

очень может быть, попробую поменять надосуге

Автор: BaluBig
Дата сообщения: 18.02.2008 10:07
V0lt

Цитата:
и автоматически вызывает Control.Invoke там, где это нужно

Я не знаю что этим хотел сказать автор статьи, но использование BackgroundWorker не отменяет запрета на обращение к элементам GUI из другого потока. Просто BackgroundWorker предоставляет механизм, облегчающий взаимодействие. Механизм работает так:
1. При вызове BackgroundWorker.RunWorkerAsync(Object argument) в качестве параметра передается экземпляр некоторого класса.
2. Этот же экземпляр передается обработчику события DoWork:
public delegate void DoWorkEventHandler(Object sender, DoWorkEventArgs e)
через e.Argument.
3. Обработчик DoWork может вызвать BackgroundWorker.ReportProgress(int percentProgress, Object userState), передав в качестве userState все тот же экземпляр (или любой другой). Это ключевой метод для обратной связи с главным потоком. Потому что
4. В главном потоке после вызова ReportProgress возникает событие BackgroundWorker.ProgressChanged, обработчик которого получит переданный userState в виде e.UserState. И этот обработчик (т.к. выполняется в потоке формы) имеет право спокойно манипулировать GUI.
Автор: say24
Дата сообщения: 18.02.2008 10:55
Пробую код POP3/SSL клиента, NetStrm.AuthenticateAsClient("mypop3sslserver") даёт вот такой облом:

System.Security.Authentication.AuthenticationException was unhandled
Message="The remote certificate is invalid according to the validation procedure."

Как бы это ни было странно, надо забить на это (вопрос: КАК?), сертификат - на самом деле "invalid". Outlook просто предупреждает, жмём "пофиг" и скачивание почты пошло.
Автор: s5656
Дата сообщения: 18.02.2008 14:49
хм.. может я и дурак но после изучения кучи инфы всеранво не получается читать смски...
Автор: fvgrod
Дата сообщения: 21.02.2008 16:06
Добрый день.

Такая программа как outlook ножет отправлять в теле письма картинку!!!

1) Подскажите как создать письмо с картинкой в теле при помощи элементов System.Web.Mail или System.Net.Mail?

2) Возможно можно пользоваться уже готовыми DLL от Microsoft Office Outlook или Outlook Express... тогда встает вопрос, как их подключить...
Автор: EZH
Дата сообщения: 22.02.2008 01:58
fvgrod
Если не в аттачменте, а в теле, то это уже html-ное тело email

Вот пример, правда на VB.NET, но не важно, т.к. всё то же.
http://aspalliance.com/1354_Sending_HTML_Mail_with_Embedded_Image_in_NET.8
Автор: recvezitor
Дата сообщения: 22.02.2008 03:29
Возникла проблема. Почему то начала отваливаться Session. Захожу дебагером, смотрю SessionID и он все время разный, естественно никакая инфа между вызовами страницы не сохраняется... Где то нашел что сессия сбрасывается при появлении ошибок. Поставил брейкпонт в global.asax на событие Application_Error, никакаих ошибок не обенаружилось. Свойство HttpContext.Current.Session.Mode = InProc, на IISе и в дебагере сессии разрешены и таймаут установлен в 20мин.

Попробовалс делать новый сайт. Запустил его через встроенный в студию сервер и через IIS все работает нормально.

Там где не работает сессия из необычного только то что все странцы унаследованы от пользовательского класса который в свою очеред унаследован от

System.Web.UI.Page

в котором замещается один метод.


Добавлено:
БЛИН это тупорылый IE глючил. В FF норм
Автор: BaluBig
Дата сообщения: 22.02.2008 10:41
fvgrod

Цитата:
2) Возможно можно пользоваться уже готовыми DLL от Microsoft Office Outlook или Outlook Express... тогда встает вопрос, как их подключить...
По поводу взаимодействия с неуправляемым кодом вообще читать в MSDN начиная с "Interoperation with unmanaged code", по поводу использования COM-объектов "Exposing COM Components to the .NET Framework".
Автор: Bubble2007
Дата сообщения: 25.02.2008 16:55
Помогите обновить dataGridView
после вставки данные не обновляются в dataGridView, но вставляются в базу данных. Я не смогла решить проблему помогите пожалуйста.

Код:
MyDataAdapter.InsertCommand.Connection = MyodbcConnection;
MyodbcConnection.Open();
string myparams = textBox1.Text;
MyDataAdapter.InsertCommand.Parameters[0].Value = myparams;
MyDataAdapter.InsertCommand.ExecuteNonQuery();
if (dataSet11.HasChanges())
MyDataAdapter.Update(dataSet11, "Table");
MyodbcConnection.Close();
Автор: Lihonosov
Дата сообщения: 25.02.2008 17:10
Bubble2007
На С#
Если DataGridView связана с DataSet1, то:

Код: MyDataAdapter.Fill(dataSet1);
Автор: BaluBig
Дата сообщения: 26.02.2008 11:21
Bubble2007
Метод MyDataAdapter.Update анализирует изменения в DataTable и вызывает соответствующую команду (DataAdaper.InsertCommand, DataAdaper.UpdateCommand, DataAdaper.DeleteCommand) для записи данных в базу. Этот вызов не имеет никакого отношения к обновлению данных в DataTable. Для этого нужно вызывать
MyDataAdapter.Fill(dataSet11, "Table");
Итого (обрати внимание на try/finally, так безопаснее).

Код:
MyDataAdapter.InsertCommand.Connection = MyodbcConnection;
try
{
MyodbcConnection.Open();
string myparams = textBox1.Text;
MyDataAdapter.InsertCommand.Parameters[0].Value = myparams;
MyDataAdapter.InsertCommand.ExecuteNonQuery();
MyDataAdapter.Fill(dataSet11, "Table");
}
finally
{
if (MyodbcConnection.State == ConnectionState.Open) MyodbcConnection.Close();
}
Автор: TeXpert
Дата сообщения: 26.02.2008 11:42
Ребята, у меня нетипизированный DataSet, и большинство таблиц -- статичны, то есть, не для изменений. Особой необходимости делать их только для чтения нет -- всё равно в программе не предусмотрены их изменения. А вот как грамотно записывать только изменённые таблицы обратно в базу? Достаточно ли будет вызова DataAdaper.Update для соответствующих таблиц вместо одного вызова DataSet.Update?

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102

Предыдущая тема: Как удалить/добавить/отключить/включить устройство?


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.