Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> перезаписать с java на c# 
:(
    Опции темы
spbsmile
Дата 23.3.2012, 19:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 44
Регистрация: 8.7.2011

Репутация: нет
Всего: нет



моя программа на java.

Код


package thread;

import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.util.*;
import javax.swing.*;
import javax.swing.Timer;


public class InnerClassTest {
    public static void main(String[] args){
 
     TalkingClock clock = new TalkingClock(3000, true, "Alex" );
     TalkingClock clock2 = new TalkingClock(5000, true, "Petr" );
     clock.start();
    // clock.join();
     clock2.start();
     
     
     JOptionPane.showMessageDialog(null, "Quit progamm?");
     System.exit(0);
    }     
}

class TalkingClock {
    public TalkingClock( int interval, boolean beep, String name) {
         this.interval = interval;
         this.beep = beep;
         this.name = name;
    }
    
    public synchronized void  start() {
        ActionListener listener = new TimerPrinter();
        Timer t = new Timer(interval, listener);
         t.start();
    }
    
    private int interval;
    private boolean beep;    
    private String name;
    
    private class TimerPrinter implements ActionListener {
        public void actionPerformed(ActionEvent event){
            //String name = "Petr";
            byte buff[] = name.getBytes();
            try
            {
             File file = new File("Currenr.txt");
             if (!file.exists())
             {
                 file.createNewFile();
             }
             
             FileOutputStream out = new FileOutputStream("Currenr.txt", true);
             for ( int i=0; i<buff.length; i++)
             {
                 out.write(buff[i]);
             }
             
            //    out.close();
            }
            
            catch(FileNotFoundException e)
            {}
            
            catch(IOException e)
            {}
         /*
            Date now = new Date(); 
            System.out.println("At the tone, the time is " + now);
            */if (beep) Toolkit.getDefaultToolkit().beep(); 
            }
            
    }
}


 
два потока с разными интервалами времени записывают слова. используется callback

моя попытка на с#
Код


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Timer;

namespace ConsoleApplication11

public class InnerClassTest {
    public static void main(String[] args){
 
     TalkingClock clock = new TalkingClock(3000, true, "Alex" );
     TalkingClock clock2 = new TalkingClock(5000, true, "Petr" );
     clock.start();
      //clock.join();
     clock2.start();
     
     
     JOptionPane.showMessageDialog(null, "Quit progamm?");
     System.exit(0);
    }     
}

class TalkingClock {
    public TalkingClock( int interval, Boolean beep, String name) {
         this.interval = interval;
         this.beep = beep;
         this.name = name;
    }
    
    public  void  start() {
        ActionListener listener = new TimerPrinter();
        Timer t = new Timer( listener, interval);
        t.start();
    }
    
    private int interval;
    private Boolean beep;    
    private String name;
    
    private class TimerPrinter : ActionListener {
        public void actionPerformed(ActionEvent event){
            //String name = "Petr";
            byte buff[] = name.getBytes();
            try
            {
             File file = new File("Currenr.txt");
             if (!file.exists())
             {
                 file.createNewFile();
             }
             
             FileOutputStream out = new FileOutputStream("Currenr.txt", true);
             for ( int i=0; i<buff.length; i++)
             {
                 out.write(buff[i]);
             }
             
            //    out.close();
            }
            
            catch(FileNotFoundException e)
            {}
            
            catch(IOException e)
            {}
         /*
            Date now = new Date(); 
            System.out.println("At the tone, the time is " + now);
            */if (beep) Toolkit.getDefaultToolkit().beep(); 
            }
            
    }
}

 
как перезаписать на с# callback , как я написал на java??
какой аналог ActionListener в с#&
программа не понимает конструктор Timer, хотя я и включил using System.Threading.Timer;
с системой ввода вывода тоже разбираться надо((
хотя бы скажите - легко ли перезаписать мою java программу на с#? я с с# к сожалению не знаком еще
помогите пожалуйста.
PM MAIL   Вверх
spbsmile
Дата 23.3.2012, 20:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 44
Регистрация: 8.7.2011

Репутация: нет
Всего: нет



попытка №2.

 
Код

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Timer;
using System.IO.FileStream;
using System.Timers;
using System.IO;

namespace ConsoleApplication11

public class InnerClassTest {
    public static void main(String[] args){
 
     TalkingClock clock = new TalkingClock(3000, true, "Alex" );
     TalkingClock clock2 = new TalkingClock(5000, true, "Petr" );
     clock.start();
      //clock.join();
     clock2.start();
     
     
     MessageBox.Show(null, "Quit progamm?");
     System.exit(0);
    }     
}

class TalkingClock {
    public TalkingClock( int interval, Boolean beep, String name) {
         this.interval = interval;
         this.beep = beep;
         this.name = name;
    }
    
    public  void  start() {
        ActionListener listener = new TimerPrinter();
        Timer t = new Timer( listener, interval);
        t.start();
    }
    
    private int interval;
    private Boolean beep;    
    private String name;
    
    private class TimerPrinter : ActionListener {
        public void actionPerformed(ActionEvent event){
            //String name = "Petr";
            byte buff[] = name.getBytes();
            try
            {
             if (File.Exists("Currenr.txt"))
                {
                   File.Delete("Currenr.txt");
                }
               FileStream fs = new FileStream("Currenr.txt");

             for ( int i=0; i<buff.length; i++)
             {
                 fs.write(buff[i]);
             }
             
            //    out.close();
            }
            
            catch(FileNotFoundException e)
            {}
            
            catch(IOException e)
            {}
         /*
            Date now = new Date(); 
            System.out.println("At the tone, the time is " + now);
            */if (beep) Toolkit.getDefaultToolkit().beep(); 
            }
            
    }
}


ругется 
Код

t.start();

 
ругается 
Код

 byte buff[] = name.getBytes();



ActionListener  не принимает. компилятор 

на этот цикл ругается 
Код

for ( int i=0; i<buff.length; i++)
             {
                 fs.write(buff[i]);
             }
             



smile

PM MAIL   Вверх
spbsmile
Дата 24.3.2012, 14:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 44
Регистрация: 8.7.2011

Репутация: нет
Всего: нет



кто-нибудь может мне объяснить как строиться callback в с#?
в java поведение передаются через объект. этот объект есть в аргументе конструтора Timer. ( в моей программе) 
в с# такое возможно?


PM MAIL   Вверх
Дрон
Дата 26.3.2012, 11:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Java-ненавистник :)
****


Профиль
Группа: Участник Клуба
Сообщений: 3179
Регистрация: 29.12.2002
Где: Санкт-Петербург

Репутация: 24
Всего: 92



В C# вместо классов Listener используются делегаты. Это одно из важных отличий от Java.
Вообще не мешало бы сначала хоть документацию посмотреть. Что-то я не вижу у System.Threading.Timer конструктора с двумя аргументами, да и метода start() тоже. Не говоря уж о классе Toolkit.
http://msdn.microsoft.com/ru-ru/library/sy...ding.timer.aspx






--------------------
Да. Именно так.
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0728 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.