﻿<?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-06-21T08:39:03Z</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">Buratino: Это явление называется 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;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="@message(27177)" rel="nofollow" target="_blank"&gt;Buratino&lt;/a&gt;:&lt;/strong&gt;
Это явление называется CallBack-ом, просьба параллельного потока вызвать себя из главного?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Думаю, да, в данном случае можно назвать этот вызов CallBack'ом.
Вообще, CallBack'ом называют (обычно), когда передают делегат (указатель на метод), например, в другой метод.&lt;/p&gt;
</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">&lt;p&gt;Это явление называется CallBack-ом, просьба параллельного потока вызвать себя из главного?&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/27127/</id>
    <title type="text">Buratino: IvanB: Думаю, лучше в классе 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;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="@message(27125)" rel="nofollow" target="_blank"&gt;Buratino&lt;/a&gt;:&lt;/strong&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="@message(27123)" rel="nofollow" target="_blank"&gt;IvanB&lt;/a&gt;:&lt;/strong&gt;
Думаю, лучше в классе MainWindow сделать специальный метод, в который, в качестве аргумента подается стакан, и уже в этом методе, в потоке пользовательского интерфейса (через Dispatch.Invoke или GuiAsync) работаем с коллекцией.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;А так в принципе в C# устроено, что команда, запущенная из параллельного потока не может вернуть что-то в главный? Команда на возврат должна непременно вызываться из главного, Gui потока и возвращать в себя?
Это связано с архитектурой пользовательского интерфейса.&lt;/p&gt;
&lt;/blockquote&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">IvanB: Думаю, лучше в классе 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;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="@message(27123)" rel="nofollow" target="_blank"&gt;IvanB&lt;/a&gt;:&lt;/strong&gt;
Думаю, лучше в классе MainWindow сделать специальный метод, в который, в качестве аргумента подается стакан, и уже в этом методе, в потоке пользовательского интерфейса (через Dispatch.Invoke или GuiAsync) работаем с коллекцией.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;А так в принципе в C# устроено, что команда, запущенная из параллельного потока не может вернуть что-то в главный? Команда на возврат должна непременно вызываться из главного, Gui потока и возвращать в себя?&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/27123/</id>
    <title type="text">Buratino: Вопрос ещё актуален. Не получается обновить из стратегии коллекцию привязанную к 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;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="@message(27114)" rel="nofollow" target="_blank"&gt;Buratino&lt;/a&gt;:&lt;/strong&gt;
Вопрос ещё актуален. Не получается обновить из стратегии коллекцию привязанную к DataGrid. Исключение из-за ошибки в потоке.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Думаю, лучше в классе MainWindow сделать специальный метод, в который, в качестве аргумента подается стакан, и уже в этом методе, в потоке пользовательского интерфейса (через Dispatch.Invoke или GuiAsync) работаем с коллекцией.&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/27109/</id>
    <title type="text">Buratino: Можно ли получить доступ из стратегии к внешним коллекциям. Вроде этого: public partial cl...</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;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="@message(27108)" rel="nofollow" target="_blank"&gt;Buratino&lt;/a&gt;:&lt;/strong&gt;
Можно ли получить доступ из стратегии к внешним коллекциям. Вроде этого:&lt;/p&gt;
&lt;div class="spoiler"&gt;&lt;/div&gt;&lt;/blockquote&gt;
&lt;pre&gt;&lt;code class="language-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;/code&gt;&lt;/pre&gt;
&lt;div&gt;&lt;p&gt;Можно, это можно сделать разными путями: передать коллекцию в конструктор стратегии, использовать статическое публичное поле коллекции, передать коллекцию в стратегию через специальное поле, быть может, можно как-то еще.
Пример использования статического поля:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-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;/code&gt;&lt;/pre&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">&lt;p&gt;Вопрос ещё актуален. Не получается обновить из стратегии коллекцию привязанную к DataGrid. Исключение из-за ошибки в потоке.&lt;/p&gt;
</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">&lt;p&gt;А, да! Класс MainWindow не указал.&lt;/p&gt;
&lt;p&gt;А как вернуть в поток стакан типа ObservableCollection&amp;lt;Quote&amp;gt; Stakan, через Dispatch.Invoke или GuiAsync...?&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-csharp"&gt;        private void Process(MarketDepth md)
        {
            MainWindow.Stakan.AddRange(md);
            
        }
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Такое исключение: Данный тип CollectionView не поддерживает изменения в своем SourceCollection из потока, отличного от потока Dispatcher.&lt;/p&gt;
</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;p&gt;Можно ли получить доступ из стратегии к внешним коллекциям. Вроде этого:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-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;/code&gt;&lt;/pre&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
</feed>