[ C# / Java ] — начинающим: задаем вопросы

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by procedure, 2 Nov 2008.

  1. Alekzzzander

    Alekzzzander Elder - Старейшина

    Joined:
    5 Sep 2007
    Messages:
    278
    Likes Received:
    36
    Reputations:
    0
    код тот же что и выше, только запрос изменился на
    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";
    
     
  2. Белый Ворон

    Joined:
    7 Oct 2012
    Messages:
    46
    Likes Received:
    3
    Reputations:
    0
    Тогда тебе придётся отказаться от использования SqlCommandBuilder и самому
    прописывать SelectCommand, UpdateCommand, InserCommand, DeleteCommand для SqlDataAdapter'a
    просто коммандбилдер не настолько "умный" чтобы все случаи разрулить, он только для простейших случаев годиться.
     
  3. geforse

    geforse Elder - Старейшина

    Joined:
    2 Mar 2008
    Messages:
    617
    Likes Received:
    290
    Reputations:
    1
    Необходимо написать чат с шифрованием (rsa) Возможно у кого-то есть,что-то готовое. В гугле искал.
     
  4. Белый Ворон

    Joined:
    7 Oct 2012
    Messages:
    46
    Likes Received:
    3
    Reputations:
    0
    тебе чат готовый нужен, или алгоритм шифрования реализованный? ))
    есть же стандартная реализация:
    http://msdn.microsoft.com/ru-ru/library/system.security.cryptography.rsacryptoserviceprovider.aspx

    а чат обычными способами. например TcpClient.
     
  5. #Wolf#

    #Wolf# Elder - Старейшина

    Joined:
    26 Mar 2008
    Messages:
    375
    Likes Received:
    166
    Reputations:
    16
    Использую 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 массив точек?
    Либо может пойти другим путем? Но Цель задачи в том, чтобы получить массив точек, который получился при пересечении двух других массивов точек.
     
  6. nikitos2401

    nikitos2401 New Member

    Joined:
    21 Jun 2009
    Messages:
    0
    Likes Received:
    0
    Reputations:
    0
    Вечер добрый. Есть вопрос по C#. Допустим я использую метод авторизации, логин, пароль и прокси, при выполнения метода авторизации в потоке с n'нным прокси, возникает проблема: прокси - "мертвый". Как в таком случае обработать ошибку и заново запустить этот метод поменяв прокси?
     
    #1466 nikitos2401, 26 Nov 2012
    Last edited: 26 Nov 2012
  7. seosimf

    seosimf Member

    Joined:
    3 Mar 2011
    Messages:
    271
    Likes Received:
    44
    Reputations:
    6
    Вопрос явно не по 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)
      {
         
    /// здесь можно обрабатывать остальные исключения
      
    }
    }
     
    #1467 seosimf, 26 Nov 2012
    Last edited: 26 Nov 2012
  8. Spot

    Spot Elder - Старейшина

    Joined:
    1 Mar 2007
    Messages:
    461
    Likes Received:
    38
    Reputations:
    1
    Работай с 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();
                    }
                }
    
            }
        }
    }
    
    
     
  9. DeepBlue7

    DeepBlue7 Elder - Старейшина

    Joined:
    2 Jan 2009
    Messages:
    359
    Likes Received:
    50
    Reputations:
    12
    Разьясните, как использовать оператор оператор lock (c#) и что он из себя представляет на пальцах :). В мсдн - пурга да ересь. Как мне, допустим, "залокать" доступ к коду записи строк в файл ? Заранее благодарю.
     
  10. FunOfGun

    FunOfGun Elder - Старейшина

    Joined:
    5 Sep 2012
    Messages:
    388
    Likes Received:
    71
    Reputations:
    124
    В области глобальной видимости класса что-то вроде
    Code:
    object objLock=new object();
    Далее код заворачиваем в
    Code:
    lock(objLocker){/*...*/}
    Вот, собсно, и все. Проще, наверно, некуда.

    del. Spot написал лучше ;)
     
    #1470 FunOfGun, 26 Nov 2012
    Last edited: 26 Nov 2012
    1 person likes this.
  11. Spot

    Spot Elder - Старейшина

    Joined:
    1 Mar 2007
    Messages:
    461
    Likes Received:
    38
    Reputations:
    1
    Оператор Lock используется при программировании с тридами, что бы несколько тридов не могли вызвать какой либо участок кода "одновременно" или точнее, не давать доступа триду к определённому участку кода, пока этот код используется другим потоком
    Например - у тебя 10 пользователей кликают на "получть подарок", а подарки ты раздаёшь только первым 5. Вот что бы число оставшихся подарков не ушло в минус, нужен лок. В Мсдн кстати вполне нормальный пример приведён, оттуда можешь и взять .
    Так же нужно учитывать, что неправильно будет лочить инстанцию, которая задекларированна как паблик.

    Как то так...
     
  12. DeepBlue7

    DeepBlue7 Elder - Старейшина

    Joined:
    2 Jan 2009
    Messages:
    359
    Likes Received:
    50
    Reputations:
    12
    Так катит ?

    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 ?
     
    #1472 DeepBlue7, 26 Nov 2012
    Last edited: 27 Nov 2012
  13. nikitos2401

    nikitos2401 New Member

    Joined:
    21 Jun 2009
    Messages:
    0
    Likes Received:
    0
    Reputations:
    0
    Вечер добрый вопрос по C#. с поточностью, все никак не пойму как сделать лучше будет имеется например массив аккаунтов 100 штук и пользователь выставил 20 потоков, как ими лучше управлять? создать еще один массив, вытаскивать из основного 20 штук, по ним цикл на авторизацию например, и.т.д пока все вы вытащит, или же как то пр другому?
     
  14. herfleisch

    herfleisch Elder - Старейшина

    Joined:
    7 Jan 2009
    Messages:
    578
    Likes Received:
    203
    Reputations:
    13
    Использовать структуру данных queue (очередь), например. Брать по одному элементу для каждого потока. Если непонятно - почитай что-нибудь о структурах организации данных. Это основы программирования.
     
  15. nikitos2401

    nikitos2401 New Member

    Joined:
    21 Jun 2009
    Messages:
    0
    Likes Received:
    0
    Reputations:
    0

    так тогда надо создавать определенное количество потоков, которое будет заданно пользователем и уже потом получается брать из очереди логины и с ним работать, верно? просто есть еще как вариант брать объекты сколько задаст пользователь и уже к каждому создавать поток
     
  16. herfleisch

    herfleisch Elder - Старейшина

    Joined:
    7 Jan 2009
    Messages:
    578
    Likes Received:
    203
    Reputations:
    13
    Да, верно. Создавать потоки и из каждого брать данные из очереди по мере необходимости. Иначе есть немалая доля риска наткнуться на ситуацию, когда почти все потоки уже обработают свои данные, а какой-нибудь один еще будет пыхтеть.
     
  17. nikitos2401

    nikitos2401 New Member

    Joined:
    21 Jun 2009
    Messages:
    0
    Likes Received:
    0
    Reputations:
    0

    но и так же получается надо держать какую то очередь потов, и если поток завершился то нужно взять новый объект и опять создать поток для работы, как это сделать?
     
  18. herfleisch

    herfleisch Elder - Старейшина

    Joined:
    7 Jan 2009
    Messages:
    578
    Likes Received:
    203
    Reputations:
    13
    Создаешь структуру очередь, у которой будет метод типа getNextAccount(), доступный потокам. Создаешь N потоков, которые будут по завершении работы не закрываться, а брать следующую запись из очереди до тех пор, пока очередь не окажется пуста.

    В чем сложность-то?

    В .NET, насколько я помню, уже есть стандартные реализации нужных тебе структур данных.
     
  19. DeepBlue7

    DeepBlue7 Elder - Старейшина

    Joined:
    2 Jan 2009
    Messages:
    359
    Likes Received:
    50
    Reputations:
    12
    Подскажите литературы по работе с графикой в c# :). Заранее благодарю.
     
    #1479 DeepBlue7, 28 Nov 2012
    Last edited: 28 Nov 2012
  20. Spot

    Spot Elder - Старейшина

    Joined:
    1 Mar 2007
    Messages:
    461
    Likes Received:
    38
    Reputations:
    1
    А что тебя конкретно интересует? Отрисовка простых фигур или что то в сторону геймдева?
    Вот тут выложили довольно большой список литературы по XNA + разные туториалы и парочка видеоуроков.
    ТЫЦ

    Вот тут ещё один видеоурок по работе с моделями и созданию мини игры.

    И ещё один ТЫЦ на туториум.
     
Loading...