Init() ve DeInit() yürütme sırası - sayfa 6

 
Ihor Herasko :


Neden yavaşlayacaklar? Gösterge çarpık yazılmadığı sürece. Normal yazılmış bir gösterge için DeInit biraz zaman alır. Ayrıca, TF'yi değiştirmek çok sık yapılan bir işlem değildir. Bazı özellikle ciddi durumlarda ("yanlış" göstergeler için), TF'yi değiştirirken bir veya iki saniye bekleyebilirsiniz.

Bu nedenle, TF'yi değiştirirken fren yapma konusundaki argüman şüpheliden daha fazlasıdır. Ayrıca henüz kurulmamış bir TF'ye geçildiğinde de oldukça fark edilir bir zaman gecikmesi algılanıyor. Ve kimse terminalin frenleri için ağlamaz.

Göstergeler farklıdır. Fren de yaptı. Ve hepsi değil - kendi ve kaynak kodunda.

Birkaç saniye gülümsedi. Arayüzde onlarca milisaniye hissediliyor, rahatsızlık anında ortaya çıkıyor.

Ve en önemlisi, soruma cevap yok:
Hangi durumlarda, grafikle basit çalışma dışında. nesneler (adında TF'nin adı olmadan), DeInit - Init dizisi önemli mi?

 
Andrey Khatimlianskii :

Göstergeler farklıdır. Fren de yaptı. Ve hepsi değil - kendi ve kaynak kodunda.

Birkaç saniye gülümsedi. Arayüzde onlarca milisaniye hissediliyor, rahatsızlık anında ortaya çıkıyor.

Ve en önemlisi, soruma cevap yok:
Hangi durumlarda, grafikle basit çalışma dışında. nesneler (adında TF'nin adı olmadan), DeInit - Init dizisi önemli mi?


Genelde global değişkenler kullanmam ama bu bazen oluyor.

Global değişkenlerle çalışırken birdirbir elde edilir. Bir grafikten bir göstergeyi silerken, kendinizden sonra temizlemeniz ve global değişkenleri kaldırmanız gerekir. Küresel değişkenleri göstergenin neresinde sileceksiniz? Muhtemelen Deinite'ta silmeniz gerekiyor, başka bir yer düşünemezsiniz. Yani zaman dilimini değiştirip yeni değişkenler oluşturduğunuzda deinite gelir ve her şeyi siler. Global Değişkenlerin göstergelerde kullanılamayacağı ortaya çıktı.

 
Sergey Chalyshev :


Genelde global değişkenler kullanmam ama bu bazen oluyor.

Global değişkenlerle çalışırken birdirbir elde edilir. Bir grafikten bir göstergeyi silerken, kendinizden sonra temizlemeniz ve global değişkenleri kaldırmanız gerekir. Küresel değişkenleri göstergenin neresinde sileceksiniz? Muhtemelen Deinite'ta silmeniz gerekiyor, başka bir yer düşünemezsiniz. Yani zaman dilimini değiştirip yeni değişkenler oluşturduğunuzda deinite gelir ve her şeyi siler. Global Değişkenlerin göstergelerde kullanılamayacağı ortaya çıktı.

Sergey, parmağınızdan emilmeyen gerçek bir örnek var mı? Ben de gelebilirim ama pratikte problemlerle karşılaşmadım.

ps: global değişkenler TF'ye bağlı olarak da adlandırılabilir.

 
Andrey Khatimlianskii :

Göstergeler farklıdır. Fren de yaptı. Ve hepsi değil - kendi ve kaynak kodunda.

Birkaç saniye gülümsedi. Arayüzde onlarca milisaniye hissediliyor, rahatsızlık anında ortaya çıkıyor.

Ve en önemlisi, soruma cevap yok:
Hangi durumlarda, grafikle basit çalışma dışında. nesneler (adında TF'nin adı olmadan), DeInit - Init dizisi önemli mi?

3. sayfada uygulamadan bir örnek verdim:
Aklıma gelen ilk şey, benim alanımda küre içinde bir ezber olduğudur. önceki durumun değişkenleri (basılan / bırakılan düğmeler) ve ardından init'te düğmeler kaydedilen değerlere göre ayarlanır. Ve tam olarak, her zaman doğru şekilde yeniden yüklemediğim düğmeler. İlk hatırladığım bu, belki başka bir şey bulurum...
 
elibrarius :
3. sayfada uygulamadan bir örnek verdim:

ch'de hatırla. init / deinit'te değil, karşılık gelen değişkenlerin her değişikliğinde terminal.
 
Andrey Dik :

ch'de hatırla. init / deinit'te değil, karşılık gelen değişkenlerin her değişikliğinde terminal.

hatırlamak)
Ayrıca, terminalin Deinit'teki mevcut uygulamasında, o zaman kullanılması gereken hiçbir şeyi yapamayacağınızı (ne global değişkenlerde ne de yazılacak dosyalarda) hatırlamanız gerekir...

Böyle bir kırık diziyle, esasen işe yaramaz işlev haline geldi.

Bunu hatırlayacağım (yanlışlıkla bu konuya rastladığım iyi oldu), ancak diğer programcılar (buraya bakmayacaklar) doğal mantıksal diziyi kullanmaya ve çalışacağını umarak deinit kullanmaya devam edecekler ve ancak o zaman init yeni TF'de başlayacak.

 
elibrarius :

hatırlamak)
Ayrıca, terminalin Deinit'teki mevcut uygulamasında, o zaman kullanılması gereken hiçbir şeyi yapamayacağınızı (ne global değişkenlerde ne de yazılacak dosyalarda) hatırlamanız gerekir...

esasen işe yaramaz işlev, böyle bir kırık dizi ile

Sadece başka bir mantık olduğunu anlayın. Özellikle MT geliştiricilerinin mantığı. Buna göre, diğer mantık, her şey oldukça mantıklı görünüyor. Sonuç olarak şu sonuca varın: Bu mantığa uyum sağlayın ve muhtemelen sizden daha deneyimli insanları bu konuda ikna etmeye çalışmayın. İşe yaramaz... Hiç kimse tek bir gösterge uğruna mevcut mantığı değiştirmeyi kabul etmeyecektir.
 
Eh, böyle bir sorunu olan ilk kişi ben değilim, bu yüzden bir gösterge uğruna değil. Kendim için zaten her şeyi yeniden yaptım, ancak başkaları da bu komisyona basabilir. Kimsenin üzerine basmaması için tırmığı çıkarmak daha iyi değil mi?
 
Alexey Viktorov :
Sadece başka bir mantık olduğunu anlayın. Özellikle MT geliştiricilerinin mantığı. Buna göre, diğer mantık, her şey oldukça mantıklı görünüyor. Sonuç olarak şu sonuca varın: Bu mantığa uyum sağlayın ve muhtemelen sizden daha deneyimli insanları bu konuda ikna etmeye çalışmayın. İşe yaramaz... Hiç kimse tek bir gösterge uğruna mevcut mantığı değiştirmeyi kabul etmeyecektir.


Finansla ilgili olmasaydı, bu tür tartışmalar olmazdı.

Ve ticaret danışmanı, zaman dilimlerinin basit bir şekilde değiştirilmesi nedeniyle doğru şekilde çalışmayı durduracak olan bir veya başka bir göstergeye bağlı olduğundan. En sinir bozucu olan da bu.

Finans konusunda ona nasıl güvenilebilir?

Belki de bu konudaki fikirlerimiz MT geliştiricileri ile farklı.
 
Andrey Khatimlianskii :

TF'yi değiştirmeden önce , terminal tüm göstergelerin eski TF'den boşaltılmasını beklerse ve ancak bundan sonra yenisini oluşturup başlatırsa, çizelgelerin nasıl yavaşlayacağını hayal edin.

Hangi durumlarda, grafikle basit çalışma dışında. nesneler (adında TF'nin adı olmadan), DeInit - Init dizisi önemli mi?

Arkadaşlar hepiniz çok farklı şeyleri karıştırıyorsunuz. Kritik yazılım olarak bir terminal için en az iki gereksinim üzerinde anlaşalım:

- kesinlikle aynı mantığı takip ederek (çoklu iş parçacığının varlığında bile) öngörülebilir şekilde çalışmalıdır;

- Çabuk çalışmalı.

(gösterge kopyasının diğer kopyaları bilip bilmediği önemli değildir, ancak depolama için terminale atanan global verilerin tutarlılığını koruması önemlidir - bu, her bir gösterge geliştiricisinin değil, terminalin sorunudur)

Bir sonraki soru, bunun nasıl uygulanacağıdır. Şu anda sadece 2. gereksinim göz önünde bulundurularak uygulanmaktadır. Gereksinim 2'den ödün vermeden, gereksinim 1'i dikkate alarak uygulamayı öneriyorum.

Grafiğin init/deini'sinin ve init/deini'nin farklı şeyler olduğuna dikkat ederseniz, gözle görülür bir yavaşlama olmayacaktır. Grafik hemen yeni ana grafiği gösterecek, ancak devralınan göstergeler için OnInit olayı, önceki OnDeinit işlendikten sonra kuyruğa alınacaktır. Terminaldeki olay kuyrukları zaten var.

MQ isterse, bana NDA terimleriyle ilgili sınıf ve dizi diyagramlarını gönderebilir, onları düzeltirim ;-).