код тот же что и выше, только запрос изменился на Code: string sql = "select a.id as 'ID', fam as 'Фамилия', a.name as 'Имя', otch as 'Отчество', b.name as 'Должность', stavka as 'Ставка', sovmest as 'Совместитель', prinyat as 'Принят', uvolen as 'Уволен' from tabel.dbo.workers a left join tabel.dbo.doljn b on a.id_doljn=b.id";
Тогда тебе придётся отказаться от использования SqlCommandBuilder и самому прописывать SelectCommand, UpdateCommand, InserCommand, DeleteCommand для SqlDataAdapter'a просто коммандбилдер не настолько "умный" чтобы все случаи разрулить, он только для простейших случаев годиться.
тебе чат готовый нужен, или алгоритм шифрования реализованный? )) есть же стандартная реализация: http://msdn.microsoft.com/ru-ru/library/system.security.cryptography.rsacryptoserviceprovider.aspx а чат обычными способами. например TcpClient.
Использую Region для нахождения пересечения двух GraphicsPath(которые заданы двумя полигонами) PHP: GraphicsPath gp1 = new GraphicsPath(); gp1.AddPolygon(P);//P - массив точек [первый полигон] Region d = new Region(gp1); GraphicsPath gp2 = new GraphicsPath(); gp2.AddPolygon(P_);//P_ - массив точек [второй полигон] d.Intersect(gp2);//пересечение Как можно получить из Region'a массив точек? Либо может пойти другим путем? Но Цель задачи в том, чтобы получить массив точек, который получился при пересечении двух других массивов точек.
Вечер добрый. Есть вопрос по C#. Допустим я использую метод авторизации, логин, пароль и прокси, при выполнения метода авторизации в потоке с n'нным прокси, возникает проблема: прокси - "мертвый". Как в таком случае обработать ошибку и заново запустить этот метод поменяв прокси?
Вопрос явно не по C# а скорей "алгоритмический". Вот к примеру решения в "лоб" - определить перечисления, которое будет указывать текущие действия. Определить переменную с типом данного перечисления. Запустить цикл while, делать try{} catch(Expretion e){} в теле цикла. В блоке try определить ветвления с помощью if и определять текущий шаг содержавшийся в переменой объявленной раньше. Что то типа такого: PHP: enum LoginSteps { Login, ChangeProxy, .... EndWork } ..... LoginSteps step = LoginSteps.ChangeProxy; while(step!=LoginSteps.EndWork) { try { if(step == LoginSteps.ChangeProxy) { /// берем прокси-сервер и присваиваем его step = LoginSteps.Login; } .... if(step == LoginSteps.Login) { /// выполняем свои действия для логина step =LoginSteps.ChangeProxy; } } /// SomeProxyExp - исключения специфичное для прокси-сервера или подключения в зависимости от того что используется catch(SomeProxyExp ex) { step = LoginSteps.ChangeProxy; } catch(Expretion ex) { /// здесь можно обрабатывать остальные исключения } }
Работай с Timeout. Вот небольшой пример для мелко-чека: Code: using System; using System.Collections.Generic; using System.Linq; using System.Net; using System.Text; using System.Threading.Tasks; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Navigation; using System.Windows.Shapes; namespace WebProxy_Tests { /// <summary> /// Interaktionslogik für MainWindow.xaml /// </summary> public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); } private void Button_Click_1(object sender, RoutedEventArgs e) { List<WebProxy> MyList = new List<WebProxy>(); MyList.Add(new WebProxy("http://203.77.249.26:8080/", true)); MyList.Add(new WebProxy("http://219.133.36.198:80/", true)); MyList.Add(new WebProxy("http://201.249.0.241:80/", true)); for (int i = 0; i < MyList.Count; i++) { WebRequest reg = WebRequest.Create("http://www.google.com"); //Ждём ответа не дохлый ли прокси reg.Timeout = 3000; try { reg.Proxy = MyList[0]; WebResponse myResponse = reg.GetResponse(); MessageBox.Show("Its ok!"); } catch (Exception ex) { MessageBox.Show("Check {"+i+"}\n. Проверьте правильность прокси. В противном случае он сдох." + ex); } finally { reg.Abort(); } } } } }
Разьясните, как использовать оператор оператор lock (c#) и что он из себя представляет на пальцах . В мсдн - пурга да ересь. Как мне, допустим, "залокать" доступ к коду записи строк в файл ? Заранее благодарю.
В области глобальной видимости класса что-то вроде Code: object objLock=new object(); Далее код заворачиваем в Code: lock(objLocker){/*...*/} Вот, собсно, и все. Проще, наверно, некуда. del. Spot написал лучше
Оператор Lock используется при программировании с тридами, что бы несколько тридов не могли вызвать какой либо участок кода "одновременно" или точнее, не давать доступа триду к определённому участку кода, пока этот код используется другим потоком Например - у тебя 10 пользователей кликают на "получть подарок", а подарки ты раздаёшь только первым 5. Вот что бы число оставшихся подарков не ушло в минус, нужен лок. В Мсдн кстати вполне нормальный пример приведён, оттуда можешь и взять . Так же нужно учитывать, что неправильно будет лочить инстанцию, которая задекларированна как паблик. Как то так...
Так катит ? Code: using System; using System.Threading; using System.IO; class streamclass { private readonly object _lock = new object(); private StreamWriter sw; public void _swInit() { this.sw = new StreamWriter("out.txt"); } public void someMethod() { lock (_lock) { { for (int i = 1; i < 1000; i++) { try { sw.WriteLine("Hello, world !"); } catch (IOException ex) { Console.WriteLine("EX !"); } } } } } } class Program { static void Main() { streamclass obj = new streamclass(); obj._swInit(); Thread[] tArr = new Thread[10000]; for (int i = 0; i < 10000; i++) { tArr[i] = new Thread(obj.someMethod); tArr[i].Start(); } Console.WriteLine("All threads running !"); Console.ReadKey(); } } И почему streamwriter flush-ует автоматом, хотя sw.AutoFlush не установлен на true ?
Вечер добрый вопрос по C#. с поточностью, все никак не пойму как сделать лучше будет имеется например массив аккаунтов 100 штук и пользователь выставил 20 потоков, как ими лучше управлять? создать еще один массив, вытаскивать из основного 20 штук, по ним цикл на авторизацию например, и.т.д пока все вы вытащит, или же как то пр другому?
Использовать структуру данных queue (очередь), например. Брать по одному элементу для каждого потока. Если непонятно - почитай что-нибудь о структурах организации данных. Это основы программирования.
так тогда надо создавать определенное количество потоков, которое будет заданно пользователем и уже потом получается брать из очереди логины и с ним работать, верно? просто есть еще как вариант брать объекты сколько задаст пользователь и уже к каждому создавать поток
Да, верно. Создавать потоки и из каждого брать данные из очереди по мере необходимости. Иначе есть немалая доля риска наткнуться на ситуацию, когда почти все потоки уже обработают свои данные, а какой-нибудь один еще будет пыхтеть.
но и так же получается надо держать какую то очередь потов, и если поток завершился то нужно взять новый объект и опять создать поток для работы, как это сделать?
Создаешь структуру очередь, у которой будет метод типа getNextAccount(), доступный потокам. Создаешь N потоков, которые будут по завершении работы не закрываться, а брать следующую запись из очереди до тех пор, пока очередь не окажется пуста. В чем сложность-то? В .NET, насколько я помню, уже есть стандартные реализации нужных тебе структур данных.
А что тебя конкретно интересует? Отрисовка простых фигур или что то в сторону геймдева? Вот тут выложили довольно большой список литературы по XNA + разные туториалы и парочка видеоуроков. ТЫЦ Вот тут ещё один видеоурок по работе с моделями и созданию мини игры. И ещё один ТЫЦ на туториум.