Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
71 / 62 / 33
Регистрация: 03.09.2013
Сообщений: 306
1

Переделать метод из консольного в Form

07.02.2014, 19:24. Показов 836. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Используя либу MonoTorrent хочу сделать простенький клиент.
Консольный вариант работает как надо а при переносе в форм компилятор ругается.
Ругается на выделенное красным. В консольном работает в этом не понимаю почему.
Это 1 метод разделённый чтобы выделить ошибку. Подскажите Плиз в чем ошибка.

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
private static void DoDownload()
        {
            int _port;
            _port = 31337;
 
            Torrent _torrent;
            EngineSettings _engineSettings = new EngineSettings();
            TorrentSettings _torrentDef = new TorrentSettings(5, 100, 0, 0);
 
            _engineSettings.SavePath = _downloadPath;
            _engineSettings.ListenPort = _port;
 
            _engine = new ClientEngine(_engineSettings);
 
            BEncodedDictionary _fastResume;
 
            try
            {
                _fastResume = BEncodedValue.Decode<BEncodedDictionary>(File.ReadAllBytes(_fastResumeFile));
            }
            catch
            {
                _fastResume = new BEncodedDictionary();
            }
 
            try
            {
                _torrent = Torrent.Load(_torrentPath);
            }
            catch
            {
                Console.Write("Decoding error");
                _engine.Dispose();
                return;
            }
 
            //Инвормация о торренте
            Console.WriteLine("Created by: {0}", _torrent.CreatedBy);
            Console.WriteLine("Creation date: {0}", _torrent.CreationDate);
            Console.WriteLine("Comment: {0}", _torrent.Comment);
            Console.WriteLine("Publish URL: {0}", _torrent.PublisherUrl);
            Console.WriteLine("Size: {0}", _torrent.Size);
            Console.WriteLine("Piece length: {0}", _torrent.PieceLength);
            Console.WriteLine("Piece count: {0}", _torrent.Pieces.Count);
            Console.WriteLine("");
            Console.WriteLine("Press any key for continue...");
 
            Console.ReadKey();
 
            if (
_fastResume.ContainsKey(_torrent.InfoHash))
_manager = new TorrentManager(_torrent, _downloadPath, _torrentDef, new FastResume((BEncodedDictionary)_fastResume[_torrent.InfoHash])
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
);
            else
                _manager = new TorrentManager(_torrent, _downloadPath, _torrentDef);
 
            _engine.Register(_manager);
 
 
            _manager.TorrentStateChanged += delegate(object o, TorrentStateChangedEventArgs e)
            {
                lock (_listener)
                    _listener.WriteLine("Last status: " + e.OldState.ToString() + " Current status: " + e.NewState.ToString());
            };
 
            foreach (TrackerTier ttier in _manager.TrackerManager.TrackerTiers)
            {
                foreach (MonoTorrent.Client.Tracker.Tracker tr in ttier.Trackers)
                {
                    tr.AnnounceComplete += delegate(object sender, AnnounceResponseEventArgs e)
                    {
                        _listener.WriteLine(string.Format("{0}: {1}", e.Successful, e.Tracker.ToString()));
                    };
                }
            }
 
 
            _manager.Start();
 
            int i = 0;
            bool _running = true;
 
            StringBuilder _stringBuilder = new StringBuilder(1024);
            while (_running)
            {
                if ((i++) % 10 == 0)
                {
                    if (_manager.State == TorrentState.Stopped)
                    {
                        _running = false;
                        exit();
                    }
 
                    _stringBuilder.Remove(0, _stringBuilder.Length);
 
 
                    formatOutput(_stringBuilder, "Total Download Rate: {0:0.00}kB/sec", _engine.TotalDownloadSpeed / 1024.0);
                    formatOutput(_stringBuilder, "Total Upload Rate:   {0:0.00}kB/sec", _engine.TotalUploadSpeed / 1024.0);
                    formatOutput(_stringBuilder, "Disk Read Rate:      {0:0.00} kB/s", _engine.DiskManager.ReadRate / 1024.0);
                    formatOutput(_stringBuilder, "Disk Write Rate:     {0:0.00} kB/s", _engine.DiskManager.WriteRate / 1024.0);
                    formatOutput(_stringBuilder, "Total Read:         {0:0.00} kB", _engine.DiskManager.TotalRead / 1024.0);
                    formatOutput(_stringBuilder, "Total Written:      {0:0.00} kB", _engine.DiskManager.TotalWritten / 1024.0);
                    formatOutput(_stringBuilder, "Open Connections:    {0}", _engine.ConnectionManager.OpenConnections);
 
 
                    printLine(_stringBuilder);
                    formatOutput(_stringBuilder, "Name:            {0}", _manager.Torrent.Name);
                    formatOutput(_stringBuilder, "Progress:           {0:0.00}", _manager.Progress);
                    formatOutput(_stringBuilder, "Download Speed:     {0:0.00} kB/s", _manager.Monitor.DownloadSpeed / 1024.0);
                    formatOutput(_stringBuilder, "Upload Speed:       {0:0.00} kB/s", _manager.Monitor.UploadSpeed / 1024.0);
                    formatOutput(_stringBuilder, "Total Downloaded:   {0:0.00} MB", _manager.Monitor.DataBytesDownloaded / (1024.0 * 1024.0));
                    formatOutput(_stringBuilder, "Total Uploaded:     {0:0.00} MB", _manager.Monitor.DataBytesUploaded / (1024.0 * 1024.0));
                    formatOutput(_stringBuilder, "Tracker Status:     {0}", _manager.TrackerManager.CurrentTracker.State);
                    formatOutput(_stringBuilder, "Warning Message:    {0}", _manager.TrackerManager.CurrentTracker.WarningMessage);
                    formatOutput(_stringBuilder, "Failure Message:    {0}", _manager.TrackerManager.CurrentTracker.FailureMessage);
 
                    Console.Clear();
                    Console.WriteLine(_stringBuilder.ToString());
                    _listener.ExportTo(Console.Out);
                }
 
                System.Threading.Thread.Sleep(500);
            }
        }
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.02.2014, 19:24
Ответы с готовыми решениями:

Переделать программу из консольного приложения в Windows Form
Помогите переделать программу из консольного приложения в Windows Form в Visual Studio 2008,...

<form> внутри <form> как переделать
Доброго времени суток. Была уже похожая тема, пытался сделать как там говорили, но ничего не вышло....

Перевод консольного приложения на Windows Form
Перевести этот код в Visual Studio 2010 в Wuindows Form Application Module Module1 Sub...

Перевод консольного приложения в Windows Form
Доброго времени суток , вот код , который вызывает все ссылки javascript моего сайта в console...

2
48 / 48 / 22
Регистрация: 18.11.2013
Сообщений: 92
08.02.2014, 00:01 2
C#
1
2
3
4
5
6
7
8
9
10
11
12
            Torrent _torrent;
///////////////////////////////////////////////
            try
            {
                _torrent = Torrent.Load(_torrentPath);
            }
            catch
            {
                Console.Write("Decoding error");
                _engine.Dispose();
                return;
            }
тут поидее должно вылетать "использование локально переменной _torrent которой не присвоено значение", если я не обсмотрелся
переменную Вы объявили, а значение ей присваивается только в случае успешного try
или null присвойте или new Torrent() ежили оно конструктор имеет, но тогда и в консоли оно не должно было работать
1
71 / 62 / 33
Регистрация: 03.09.2013
Сообщений: 306
08.02.2014, 11:17  [ТС] 3
Взял за основу другой код с этой же библиотекой. Все получилось. Тут же трабла непонятная, при компиляции библиотеки компилится и пример (практически такой как код выше) и он работает. Стоит добавить собранную dll к другому проекту с тем же кодом и доступ к переменой infoHash пропадает из за того что в библе она стоит как internal.
В общем проблему решил можно закрывать тему.
0
08.02.2014, 11:17
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.02.2014, 11:17
Помогаю со студенческими работами здесь

Перевод консольного приложения на Windows Form
Сортировка слиянием Public Sub MergeSort(ByRef Arr() As Double, ByVal N As Long) Dim C As...

С консольного приложения в Dll, Windows Form!
Задание такое: сделать массив для сохранения веса студентов группы из 20 человек. Заполнить массив...

Переделать из консольного варианта
Помогите пожалуйста переделать из этой задачки консольного варианта в не консольный (делфи). Очень...

Переделать с консольного на визуальный
//--------------------------------------------------------------------------- #pragma hdrstop...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru