Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/18: Рейтинг темы: голосов - 18, средняя оценка - 4.56
 Аватар для DELAKEY
6 / 6 / 3
Регистрация: 20.11.2013
Сообщений: 249

Самоуничтожение объекта им самим

15.06.2015, 18:44. Показов 3661. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Как в C# правильно произвести дискрип объекта из него?
Суть такая что объект создаётся, конструкторе запускается поток, по по окончанию потока нужно уничтожить класс (освободить память) ссылки на сам класс при его создании не сохраняется т.е. по теории клаис должен был само уничтожиться по окончанию потока сам но тест-эксперимент показал что память не освобождается а забивается
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
15.06.2015, 18:44
Ответы с готовыми решениями:

Самоуничтожение объекта
Здравствуйте. Может ли объект (Экземпляр класса) самостоятельно удаляться? Потому что чтобы удалить объект, нужно в его параметр послать...

Самоуничтожение объекта класса
Всем доброго дня!!! Подскажите пожалуйста как лучше поступить: есть игровое поле (условно просто матрица указателей на клетки, которые в...

Почему, клон объекта не является самим объектом и не обладает его свойствами?
Здравствуйте. Хотелось бы услышать ответ на вот какой вопрос. Почему, клон объекта не является самим объектом и не обладает его...

14
88 / 84 / 31
Регистрация: 18.11.2013
Сообщений: 390
15.06.2015, 19:04
хотя я вам помогу, существуют деструкторы, которые выделяются при удалении, называются они так же как и конструкторы, только с символом ~ в начале
0
141 / 117 / 26
Регистрация: 07.12.2014
Сообщений: 371
15.06.2015, 19:07
DELAKEY, а код можно?
Krock21rus, и что ему даст деструктор?
0
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
15.06.2015, 19:17
Цитата Сообщение от DELAKEY Посмотреть сообщение
Как в C# правильно произвести дискрип объекта из него?
Никак, работой с управляемой памятью занимается рантайм.

Можно явно вызывать GC.Collect, но этим вы только убьете производительность.

Цитата Сообщение от DELAKEY Посмотреть сообщение
ссылки на сам класс при его создании не сохраняется т.е. по теории клаис должен был само уничтожиться по окончанию потока
Если ссылки не сохраняются, то класс может быть уничтожен сборщиком в любой момент: по окончанию потока, до начала потока, во время потока и т.д.
0
 Аватар для DELAKEY
6 / 6 / 3
Регистрация: 20.11.2013
Сообщений: 249
15.06.2015, 19:23  [ТС]
Цитата Сообщение от Krock21rus Посмотреть сообщение
хотя я вам помогу, существуют деструкторы, которые выделяются при удалении, называются они так же как и конструкторы, только с символом ~ в начале
Как подобное реализовывать в C++ я знаю но тут нужно писать на C#.

Цитата Сообщение от Vigelforts Посмотреть сообщение
DELAKEY, а код можно?
К сожелению кода нет, тот что был я решил удалить и делать за нового благо кода было не много так, что не жалко)
0
88 / 84 / 31
Регистрация: 18.11.2013
Сообщений: 390
15.06.2015, 23:01
сделайте новый код, не понятно без кода как вам можно помочь, тем более вы там потоки открываете новые, как поток подаёт сигнал на уничтожение классу, вызвавшему его, это важно
0
16.06.2015, 11:44

Не по теме:

C#
1
2
3
private void Harakiri(){
    GC.Collect(this);            
}

0
141 / 117 / 26
Регистрация: 07.12.2014
Сообщений: 371
16.06.2015, 11:56
KeBJIaP,

Не по теме:

что?Это в каком шарпе такой код возможен если не секрет?)Нельзя указывать сборщику что конкретно убирать.Максимум указать поколение

0
146 / 143 / 32
Регистрация: 21.01.2012
Сообщений: 545
16.06.2015, 11:59
Vigelforts,

Не по теме:

так больше экспрессии)

0
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
16.06.2015, 13:18
DELAKEY, если все так критично, реализуйте в классе интерфейс IDisposable и вызовете по необходимости метод Dispose().
0
[Bicycle Reinventor]
 Аватар для Exerion
332 / 270 / 109
Регистрация: 19.10.2011
Сообщений: 668
Записей в блоге: 2
16.06.2015, 15:57
Подробно про IDisposable. Как и сказал insite2012, реализуете этот интерфейс, непосредственно перед завершением вызываете this.Dispose() и завершаете поток.
0
 Аватар для DELAKEY
6 / 6 / 3
Регистрация: 20.11.2013
Сообщений: 249
17.06.2015, 05:25  [ТС]
Ну вот к примеру код с тойже проблемой но тут проблема стоит не остро
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
using UnityEngine;
using System.Threading;
using System.Collections;
using System.Net;
using System.Net.Sockets;
using System.IO;
public class AddPhone : MonoBehaviour {
 
    // Use this for initialization
    UILabel phone;
    void Start () {
    
    }
    
    // Update is called once per frame
    void Update () {
    
    }
 
    public void Send()
    {
 
        PhoneServer phoneServer = new PhoneServer();
        phoneServer.Send(phone.text);
        phone.text = "";
        NewBehavior.instance.ButtonMainShow();
    }
    class PhoneServer
    {
        TcpClient tcp;
        string _phone;
        public void Send(string phone)
        {
            _phone = phone;
            new Thread(new ThreadStart(_send)).Start();
        }
 
        void _send()
        {
 
            tcp = new TcpClient("172.0.0.1", 8891);
            Thread.Sleep(100);
            BinaryWriter wr = new BinaryWriter(tcp.GetStream());
            wr.Write(2);
            wr.Write(_phone);
 
            Thread.Sleep(100);
            wr.Close();
            tcp.Close();
            Thread.Sleep(100);
            tcp = null;
        }
    }
}
0
[Bicycle Reinventor]
 Аватар для Exerion
332 / 270 / 109
Регистрация: 19.10.2011
Сообщений: 668
Записей в блоге: 2
17.06.2015, 09:34
Я не вижу у вас ни одного конструктора, поток создаётся в методе. В потоке нет бесконечных циклов, он завершится самостоятельно после того, как успешно или безуспешно отправит данные по tcp, что в вашем случае произойдёт менее, чем за секунду.
Насчёт освобождения ресурсов - BinaryWriter можно обернуть в using, после работы он очистится (однажды). Для всех используемых вами объектов, которые реализуют IDisposable неплохо было бы вызвать Dispose(), когда они больше не нужны.
Чтобы очистить память от экземпляра PhoneServer phoneServer = new PhoneServer(); достаточно ссылку на него присвоить в null, далее надеяться на сборщик мусора. Но поскольку этот класс использует объекты с интерфейсом IDisposable, правильно было бы чтобы он сам тоже реализовывал этот интерфейс.
И на заметку - вы должны ведь знать, что в юнити создание доп.потоков чревато тем, что из них невозможно получить доступ ни к каким встроенным классам самого юнити? И ещё - вы уверены, что профайлер юнити указывает на утечку именно в этом месте?
0
141 / 117 / 26
Регистрация: 07.12.2014
Сообщений: 371
17.06.2015, 10:03
Так может течет то потому что ресурсы BinaryWriter и TcpClient у вас утекают постоянно?
0
 Аватар для DELAKEY
6 / 6 / 3
Регистрация: 20.11.2013
Сообщений: 249
18.06.2015, 20:06  [ТС]
Цитата Сообщение от Exerion Посмотреть сообщение
Я не вижу у вас ни одного конструктора, поток создаётся в методе. В потоке нет бесконечных циклов, он завершится самостоятельно после того, как успешно или безуспешно отправит данные по tcp, что в вашем случае произойдёт менее, чем за секунду.
Это не тот код что был в начале, но проблема схожа.
Цитата Сообщение от Exerion Посмотреть сообщение
И на заметку - вы должны ведь знать, что в юнити создание доп.потоков чревато тем, что из них невозможно получить доступ ни к каким встроенным классам самого юнити?
знаю
Цитата Сообщение от Exerion Посмотреть сообщение
И ещё - вы уверены, что профайлер юнити указывает на утечку именно в этом месте?
Он не видит не чего
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
18.06.2015, 20:06
Помогаю со студенческими работами здесь

Самоуничтожение файла
Как сделать штоб файл самоуничтожалса

Самоуничтожение программы
Всем доброго вечера. Помню, год назад примерно в журнале "Хакер" была задача, заключающаяся в том, чтобы сделать программу,...

Самоуничтожение экземпляра
Как самоуничтожить мувик когда все кадры его доходят до конца? В примере по AS2 в последнем кадре писали: this.removeMovieClip(); А...

Самоуничтожение базы... :)
Можно ли в Акцессе создать код который уничтожил бы все таблицы в указанную дату? кто нибудь пробывал? ну или хотя бы думал об этом?

Самоуничтожение панели
- Здравствуйте Форумчане! У меня возник такой вопрос: В моей программе сделан VCL-компонент на базе TPanel (TMy_Panel). На ней, в...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru