﻿<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type='text/css' href='https://stocksharp.com/css/style.css'?>
<?xml-stylesheet type='text/css' href='https://stocksharp.com/css/bbeditor.css'?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title type="html">Доступ к объектам из классов</title>
  <id>~/topic/3916/dostup-k-obektam-iz-klassov/</id>
  <rights type="text">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  <updated>2026-04-19T18:07:07Z</updated>
  <logo>https://stocksharp.com/images/logo.png</logo>
  <link href="https://stocksharp.com/handlers/atom.ashx?category=topic&amp;id=3916" rel="self" type="application/rss+xml" />
  <entry>
    <id>https://stocksharp.com/posts/m/27210/</id>
    <title type="text">Это явление называется CallBack-ом, просьба параллельного потока вызвать себя из главного? Думаю, да...</title>
    <published>2013-08-29T06:48:51Z</published>
    <updated>2013-08-29T06:48:51Z</updated>
    <author>
      <name>IvanB</name>
      <uri>https://stocksharp.com/users/26984/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;div class="quote"&gt;&lt;span class="quotetitle"&gt;Buratino &lt;a href="https://stocksharp.com/posts/m/27177/" class="quote_nav"&gt;&lt;/a&gt;&lt;/span&gt;&lt;div class="innerquote"&gt;Это явление называется CallBack-ом, просьба параллельного потока вызвать себя из главного?&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Думаю, да, в данном случае можно назвать этот вызов CallBack&amp;#39;ом.&lt;br /&gt;Вообще, CallBack&amp;#39;ом называют (обычно), когда передают делегат (указатель на метод), например, в другой метод.</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/27177/</id>
    <title type="text">Это явление называется CallBack-ом, просьба параллельного потока вызвать себя из главного?</title>
    <published>2013-08-27T16:22:32Z</published>
    <updated>2013-08-27T16:22:32Z</updated>
    <author>
      <name>Buratino</name>
      <uri>https://stocksharp.com/users/451/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">Это явление называется CallBack-ом, просьба параллельного потока вызвать себя из главного?</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/27127/</id>
    <title type="text"> Думаю, лучше в классе MainWindow сделать специальный метод, в который, в качестве аргумента подаетс...</title>
    <published>2013-08-25T15:25:58Z</published>
    <updated>2013-08-25T15:25:58Z</updated>
    <author>
      <name>IvanB</name>
      <uri>https://stocksharp.com/users/26984/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;div class="quote"&gt;&lt;span class="quotetitle"&gt;Buratino &lt;a href="https://stocksharp.com/posts/m/27125/" class="quote_nav"&gt;&lt;/a&gt;&lt;/span&gt;&lt;div class="innerquote"&gt;&lt;div class="quote"&gt;&lt;span class="quotetitle"&gt;IvanB &lt;a href="https://stocksharp.com/posts/m/27123/" class="quote_nav"&gt;&lt;/a&gt;&lt;/span&gt;&lt;div class="innerquote"&gt;&lt;br /&gt;Думаю, лучше в классе MainWindow сделать специальный метод, в который, в качестве аргумента подается стакан, и уже в этом методе, в потоке пользовательского интерфейса (через Dispatch.Invoke или GuiAsync) работаем с коллекцией.&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;А так в принципе в C# устроено, что команда, запущенная из параллельного потока не может вернуть что-то в главный? Команда на возврат должна непременно вызываться из главного, Gui потока и возвращать в себя?&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;Это связано с архитектурой пользовательского интерфейса.&lt;br /&gt;&lt;br /&gt;</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/27125/</id>
    <title type="text"> Думаю, лучше в классе MainWindow сделать специальный метод, в который, в качестве аргумента подаетс...</title>
    <published>2013-08-25T11:18:36Z</published>
    <updated>2013-08-25T11:18:36Z</updated>
    <author>
      <name>Buratino</name>
      <uri>https://stocksharp.com/users/451/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;div class="quote"&gt;&lt;span class="quotetitle"&gt;IvanB &lt;a href="https://stocksharp.com/posts/m/27123/" class="quote_nav"&gt;&lt;/a&gt;&lt;/span&gt;&lt;div class="innerquote"&gt;&lt;br /&gt;Думаю, лучше в классе MainWindow сделать специальный метод, в который, в качестве аргумента подается стакан, и уже в этом методе, в потоке пользовательского интерфейса (через Dispatch.Invoke или GuiAsync) работаем с коллекцией.&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;А так в принципе в C# устроено, что команда, запущенная из параллельного потока не может вернуть что-то в главный? Команда на возврат должна непременно вызываться из главного, Gui потока и возвращать в себя?</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/27123/</id>
    <title type="text">Вопрос ещё актуален. Не получается обновить из стратегии коллекцию привязанную к DataGrid. Исключени...</title>
    <published>2013-08-25T10:40:49Z</published>
    <updated>2013-08-25T10:40:49Z</updated>
    <author>
      <name>IvanB</name>
      <uri>https://stocksharp.com/users/26984/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;div class="quote"&gt;&lt;span class="quotetitle"&gt;Buratino &lt;a href="https://stocksharp.com/posts/m/27114/" class="quote_nav"&gt;&lt;/a&gt;&lt;/span&gt;&lt;div class="innerquote"&gt;Вопрос ещё актуален. Не получается обновить из стратегии коллекцию привязанную к DataGrid. Исключение из-за ошибки в потоке.&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Думаю, лучше в классе MainWindow сделать специальный метод, в который, в качестве аргумента подается стакан, и уже в этом методе, в потоке пользовательского интерфейса (через Dispatch.Invoke или GuiAsync) работаем с коллекцией.</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/27109/</id>
    <title type="text">Можно ли получить доступ из стратегии к внешним коллекциям. Вроде этого: public partial class MainWi...</title>
    <published>2013-08-23T10:42:46Z</published>
    <updated>2013-08-25T10:36:27Z</updated>
    <author>
      <name>IvanB</name>
      <uri>https://stocksharp.com/users/26984/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;div class="quote"&gt;&lt;span class="quotetitle"&gt;Buratino &lt;a href="https://stocksharp.com/posts/m/27108/" class="quote_nav"&gt;&lt;/a&gt;&lt;/span&gt;&lt;div class="innerquote"&gt;Можно ли получить доступ из стратегии к внешним коллекциям. Вроде этого:&lt;br /&gt;&lt;br /&gt;&lt;div class='spoilertitle'&gt;&lt;input type='button' value='Show spoiler' class='btn btn-primary' onclick="toggleSpoiler(this, 'spolier_76b2b584e83741909900c2317b2c0231');" title='Show spoiler' /&gt;&lt;/div&gt;&lt;div class='spoilerbox' id='spolier_76b2b584e83741909900c2317b2c0231' style='display:none'&gt;&lt;div class="code"&gt;&lt;strong&gt;Code&lt;/strong&gt;&lt;div class="innercode"&gt;&lt;pre class="brush:csharp"&gt;

    public partial class MainWindow : Window
    {
        public static ObservableCollection&amp;lt;MarketDepth&amp;gt; Stakan { get; set; }

        public MainWindow()
        {
            Stakan = new ObservableCollection&amp;lt;MarketDepth&amp;gt;() { };
            InitializeComponent();
        }
    }

    class MyStrategy:Strategy
    {
        protected override void OnStarted()
        {
            [h]Stakan.???[/h]
                
            base.OnStarted();
        }
    }
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;Можно, это можно сделать разными путями: передать коллекцию в конструктор стратегии, использовать статическое публичное поле коллекции, передать коллекцию в стратегию через специальное поле, быть может, можно как-то еще.&lt;br /&gt;Пример использования статического поля:&lt;br /&gt;&lt;div class="code"&gt;&lt;strong&gt;Code&lt;/strong&gt;&lt;div class="innercode"&gt;&lt;pre class="brush:csharp"&gt;

    public partial class MainWindow : Window
    {
        public static ObservableCollection&amp;lt;MarketDepth&amp;gt; Stakan { get; set; }

        public MainWindow()
        {
            Stakan = new ObservableCollection&amp;lt;MarketDepth&amp;gt;() { };
            InitializeComponent();
        }
    }

    class MyStrategy:Strategy
    {
        protected override void OnStarted()
        {
            //TODO: using MainWindow.Stakan
                
            base.OnStarted();
        }
    }
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/27114/</id>
    <title type="text">Вопрос ещё актуален. Не получается обновить из стратегии коллекцию привязанную к DataGrid. Исключени...</title>
    <published>2013-08-24T08:49:41Z</published>
    <updated>2013-08-24T08:49:41Z</updated>
    <author>
      <name>Buratino</name>
      <uri>https://stocksharp.com/users/451/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">Вопрос ещё актуален. Не получается обновить из стратегии коллекцию привязанную к DataGrid. Исключение из-за ошибки в потоке.</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/27110/</id>
    <title type="text">А, да! Класс MainWindow не указал. А как вернуть в поток стакан типа ObservableCollection Stakan, че...</title>
    <published>2013-08-23T10:55:39Z</published>
    <updated>2013-08-23T11:37:43Z</updated>
    <author>
      <name>Buratino</name>
      <uri>https://stocksharp.com/users/451/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">А, да! Класс MainWindow не указал.&lt;br /&gt;&lt;br /&gt;А как вернуть в поток стакан типа ObservableCollection&amp;lt;Quote&amp;gt; Stakan, через Dispatch.Invoke или GuiAsync...?&lt;br /&gt;&lt;br /&gt;&lt;div class="code"&gt;&lt;strong&gt;Code&lt;/strong&gt;&lt;div class="innercode"&gt;&lt;pre class="brush:csharp"&gt;
        private void Process(MarketDepth md)
        {
            MainWindow.Stakan.AddRange(md);
            
        }&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Такое исключение: Данный тип CollectionView не поддерживает изменения в своем SourceCollection из потока, отличного от потока Dispatcher.</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/27108/</id>
    <title type="text">Можно ли получить доступ из стратегии к внешним коллекциям. Вроде этого: public partial class MainWi...</title>
    <published>2013-08-23T09:22:47Z</published>
    <updated>2013-08-23T09:22:47Z</updated>
    <author>
      <name>Buratino</name>
      <uri>https://stocksharp.com/users/451/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">Можно ли получить доступ из стратегии к внешним коллекциям. Вроде этого:&lt;br /&gt;&lt;br /&gt;&lt;div class="code"&gt;&lt;strong&gt;Code&lt;/strong&gt;&lt;div class="innercode"&gt;&lt;pre class="brush:csharp"&gt;

    public partial class MainWindow : Window
    {
        public static ObservableCollection&amp;lt;MarketDepth&amp;gt; Stakan { get; set; }

        public MainWindow()
        {
            Stakan = new ObservableCollection&amp;lt;MarketDepth&amp;gt;() { };
            InitializeComponent();
        }
    }

    class MyStrategy:Strategy
    {
        protected override void OnStarted()
        {
            [h]Stakan.???[/h]
                
            base.OnStarted();
        }
    }
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
</feed>