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

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

  1. zifanchuck

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

    Joined:
    27 Oct 2008
    Messages:
    460
    Likes Received:
    161
    Reputations:
    3
    Использую WebBrowser на c#. При загрузке файла возникает ошибка
    [​IMG]
    Как убрать вывод этого окна без костылей типа в таймере палить не выскочило ли окно и если да то кликать "Нет".
    Использование браузера обязательное условие.
    ScriptErrorsSuppressed стоит True
     
  2. Spot

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

    Joined:
    1 Mar 2007
    Messages:
    462
    Likes Received:
    38
    Reputations:
    1
    Поидеи хватает WebBrowser1.ScriptErrorsSuppressed = TrueБ

    Посмотри HtmlWindow.Error вот тут может можно будет перехватывать евент оздания диалогового окна с ошибкой и заменять его своим (ну или на пустоту повесить).

    Вот тут еще на стековерфло вопрос схожий и пример.
     
    1 person likes this.
  3. zifanchuck

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

    Joined:
    27 Oct 2008
    Messages:
    460
    Likes Received:
    161
    Reputations:
    3
    Спасибо. Как доберусь до компа буду пробовать
     
  4. Melfis

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

    Joined:
    25 Apr 2011
    Messages:
    507
    Likes Received:
    105
    Reputations:
    53
    c sharp (Unity3D)
    Задача:
    Асинхронно получить ответ от сервера через WebClient и при вызове ивента WebClient.UploadValuesCompleted (который вызывается в отдельном потоке самого WebClient) выбросить ивент.
    Вопрос:
    Нужно выбросить мой ивент в стороннем потоке так, чтобы делегат выполнялся в основном потоке. По простому: чтобы побочный поток сказал основному: "Вот, блять! Готово! На те данные от сервера и делай чо хочешь, урод, с ними."

    Выполнять callback в контексте побочного потока нельзя в силу специфики Unity3D. Есть конечно вариант делать стэк реквестов, ставить флаг об окончании приёма данных и в поле записывать их(данные от сервера), а потом в методе Update(выполняется в юнити каждый фрейм) проверять этот стек и выполнять callback'и ...

    Code:
    public delegate void UI(string jsonString);
    public event UI OnResponse;
    
    public delegate void Callback(object obj);
    ...
    ...
    public static void Get() {
    	using (WebClient wb = new WebClient()) {
    		try {
    			wb.UploadValuesCompleted += (sender, e) => {
    				jsonString = Encoding.UTF8.GetString(e.Result);
    				Debug.Log(jsonString);
    
    				if (_IsError(jsonString)) {
    					OnResponse(null);
    				}
    				OnResponse(jsonString);
    
    				isDone = true;
    			};
    
    			wb.UploadValuesAsync(_serverAddress, "POST", _requestData);
    
    		} catch (WebException e) {
    			Debug.Log(e);
    		}
    	}
    }
    ...
    ...
    static public void Logout(Callback callback) {
    	Request req = new Request("logout");
    	req.OnResponse += delegate(string jsonString) {
    		var response = JsonConvert.DeserializeObject<ServerJson.Status>(jsonString);
    		callback(response.data.result);
    	};
    	req.Get();
    }
    
     
  5. bernadito

    bernadito New Member

    Joined:
    30 May 2013
    Messages:
    0
    Likes Received:
    0
    Reputations:
    0
    Ребята , помогите, мне нужно установить ISP lite на сервер UBUNTU 12.04 есть одно но на сервере уже установлен сайт
     
  6. M@rkus

    Joined:
    25 Jul 2010
    Messages:
    46
    Likes Received:
    6
    Reputations:
    0
    Передать функцию/процедуру как параметр (С#)

    Добрый день, опишу задачу. Необходимо функцию или процедуру с любыми типами параметров различного количества(или без оных) и любыми типами возвращаемых значений передать в другую процедуру.

    Передача процедур решается путь создания делегата и перегрузок, а вот с функциями дела обстоят несколько сложнее, при том, что надо учитывать тип возвращаемых значений/типы аргументов, а также, что это может быть вообще не функция. :confused:

    Есть идеи как это можно реализовать?
     
    #1586 [email protected], 31 Jul 2013
    Last edited: 31 Jul 2013
  7. FunOfGun

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

    Joined:
    5 Sep 2012
    Messages:
    391
    Likes Received:
    70
    Reputations:
    124
    delegate object func(object params)? в случае, если это процедура -- возвращать null, если параметров нет -- передавать тоже null, в противном случае массив/список object'ов. как-то так.
     
    1 person likes this.
  8. Spot

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

    Joined:
    1 Mar 2007
    Messages:
    462
    Likes Received:
    38
    Reputations:
    1
    Какая-то неявная грань между функцией и процедурой, мне кажется ты несколько смешиваешь эти понятия, тем самым затрудняя понятие поставленной задачи.
    Насколько я понял - ты не знаешь сколько параметров будет передано в функцию и сколько она должна будет вернуть или передать параметров в другую функцию? Если так то есть несколько вариантов - objects, свой конструкт или var c занесением в List<type> или Tuple<>.
     
  9. GhostOnline

    GhostOnline Active Member

    Joined:
    20 Dec 2008
    Messages:
    724
    Likes Received:
    110
    Reputations:
    22
    [email protected] если ты подробнее опишешь что именно тебе нужно делать с получаемыми методами - я скорее всего смогу тебе помочь. возможно тебе вполне хватит MethodInfo?

    а вообще есть класс Delegate:
    PHP:
            static void Main(string[] args)
            {
                
    Action<string[]> Main;
                
    Proc(a);

                
    Func<bool= () => true;
                
    Proc(f);

                
    Console.Read();
            }

            static 
    void Proc(Delegate d)
            {
            }
     
  10. Melfis

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

    Joined:
    25 Apr 2011
    Messages:
    507
    Likes Received:
    105
    Reputations:
    53
    Вот упрощённый код вопроса:
    Code:
    class ClassWithEvent {
    	public delegate void EventHandler();
    
    	public event EventHandler OnEvent;
    }
    
    class Cls {
    	private static ClassWithEvent _obj;
    
    	public Cls() {
    		_obj = new ClassWithEvent();
    		_obj.OnEvent += Event;
    	}
    
    	private void Event() {
    		Debug.Log("xyi");
    	}
    }
    
    var x = new Cls();
    x = new Cls();
    Сборщик мусора прибьёт первые экземпляры классов х, _obj после переприсвоения?
     
  11. FunOfGun

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

    Joined:
    5 Sep 2012
    Messages:
    391
    Likes Received:
    70
    Reputations:
    124
    насколько я помню, да, но это может произойти и в момент завершения программы, а может сразу после x = new Cls();
     
    2 people like this.
  12. -=Cerberus=-

    -=Cerberus=- κρυπτός γράφω

    Joined:
    29 Apr 2012
    Messages:
    1,320
    Likes Received:
    919
    Reputations:
    391
    можно принудительно собрать мусор

    PHP:
    using System;

    class 
    Program
    {
        static 
    void Main(string[] args)
        {
            
    GC.Collect(2GCCollectionMode.Optimized);
        }
    }
     
  13. Dr_Lee

    Dr_Lee New Member

    Joined:
    2 Jan 2013
    Messages:
    3
    Likes Received:
    0
    Reputations:
    0
    Чат на с#

    Вообщем написал я чат на с# и у меня возникли 2 проблемы:
    1)Чат действует в пределах локальной сети (а хотелось бы расширить его область до интернета).
    2)В чате отсутствует Русская кодировка к примеру слово "Чат" он будет писать как "???".

    Исходники

    спасайте...
     
  14. DeepBlue7

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

    Joined:
    2 Jan 2009
    Messages:
    359
    Likes Received:
    50
    Reputations:
    12

    Юзай UnicodeEncoding, ну или UTF8.
     
  15. maga05

    maga05 New Member

    Joined:
    6 Mar 2011
    Messages:
    20
    Likes Received:
    0
    Reputations:
    0
    получится ли на языке Java написать АЗ, инжекты или трой скажем на уровне цита, спай, айс? нарна, скорее всего получится, но как это все воркать будет?
     
  16. Ins3t

    Ins3t Харьковчанин

    Joined:
    18 Jul 2009
    Messages:
    942
    Likes Received:
    428
    Reputations:
    139
    хyево воркать будет.
     
  17. DeepBlue7

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

    Joined:
    2 Jan 2009
    Messages:
    359
    Likes Received:
    50
    Reputations:
    12
    Как напишешь, так работать и будет )).


    Вопрос по C#. Пишу класс сервера/клиента. Проблема заключается в том, что я хочу сделать сервер и клиент "дополнимыми". Т.е. мой класс сервера или клиента используется как базовый, а унаследованный класс имеет такие особенности как особая реакция на полученные и отправленные данные (разобранные на пакеты, конечно). Подскажите, как такое реализовать ? (Собственно, дополнимость). Виртуальные матоды не катят, хочу более изящно :). Уже замучался воевать с интерфейсами и абстрактными классами. Заранее благодарю.
     
    #1597 DeepBlue7, 26 Sep 2013
    Last edited: 26 Sep 2013
  18. M@rkus

    Joined:
    25 Jul 2010
    Messages:
    46
    Likes Received:
    6
    Reputations:
    0
    Ребят спасибо за ответы, GhostOnline, Spot, FunOfGun
    Смысл был сделать универсальную обертку для любых функций и процедур.
    Как пример. Нам необходимо запустить процедуру или функцию с полный подавлением ошибок или наоборот вывести ошибки в базу или например вывести ошибки на экран.
    Мы делаем обертку типа объявленного делегата в которую заворачивает функцию и дальше выполняем передав ей перечисления типа запуска. И хотелось сделать это как можно более деликатнее... Чтобы не тащить каждый раз типы в параметры, не менять типизацию созданных процедур и не тащить типы выходных данных.
    Получилось, но как то все равно криво потому что мы все равно тащим сигнатуры.

    PHP:
            public delegate object Function(object[] args);


            public 
    enum LaunchVariant
            
    {

                
    Debug,

                
    Safe
            
    };

       
            public static 
    object Launch(Function function, object[] argsLaunchVariant variant)
            {
                try
                {
                    return function(
    args);
                }
                catch (
    Exception e)
                {
                    if (
    variant == LaunchVariant.Debug)
                    {
                        
    MessageBox.Show(e.StackTrace.Split(new[] {"\r\n"},
                            
    StringSplitOptions.None).First(), e.Message);
                    }
                }
                return 
    null;
            }
     
    #1598 [email protected], 26 Sep 2013
    Last edited: 26 Sep 2013
  19. M@rkus

    Joined:
    25 Jul 2010
    Messages:
    46
    Likes Received:
    6
    Reputations:
    0
    Попробуй через атрибуты сделать или паттерн декоратор посмари, возможно что нить навеет.
     
    #1599 [email protected], 26 Sep 2013
    Last edited: 26 Sep 2013
  20. herfleisch

    herfleisch Banned

    Joined:
    7 Jan 2009
    Messages:
    577
    Likes Received:
    174
    Reputations:
    13
    Я не понимаю что ты хочешь, скорее всего ты и сам не знаешь чего хочешь. Судя по всему, ты говоришь о наследовании.
     
Loading...