QuikTerminal.Login exception

QuikTerminal.Login exception
Atom
11/30/2011
Supervisor


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


Tags:


Thanks:


< 1 2 3  >
Mikhail Sukhov

Avatar
Date: 12/1/2011
Reply


Supervisor:

Mikhail Sukhov:

Supervisor: Хотел, но что-то до него дело не доходит

Еще как доходит, если кликнуть Vew Details. В Visual Studio самое главное - это умение производить отладку приложения. Иначе бы ничем не отличалась она от Notepad++ Потратьте неделю на изучение этого аспекта. Сэкономите себе месяцы мучений. Спасибо за совет, изучаю всё в процессе работы, пока навыков отладки хватало, вот:

в StockSharp.Quik.QuikTerminal.Logout() в IronTrader.Core.LogoutQuik() в C:\Users\user_197\Desktop\Trader\Trader\Classes\Core.cs:строка 421 в IronTrader.Views.MainWindow.LogoutQuik(Object sender, EventArgs e) в C:\Users\user_197\Desktop\Trader\Trader\Views\MainWindow.xaml.cs:строка 240


Еще не плохо бы показывать стек трейс по первоначальным ошибкам.
Thanks:

Supervisor

Avatar
Date: 12/1/2011
Reply


Да, ошибка одинаковая по обоим методам, вот по логину:


   в System.StubHelpers.ValueClassMarshaler.ConvertToManaged(IntPtr dst, IntPtr src, IntPtr pMT)
   в Ecng.Interop.WinApi.GetMenuItemInfo(IntPtr hMenu, UInt32 uItem, Boolean fByPosition, MenuItemInfo& lpmii)
   в Ecng.Interop.ManagedWinApiHelper.GetMenuItems(IntPtr hMenu, SystemWindow window)
   в Ecng.Interop.SystemMenu..ctor(IntPtr hMenu, SystemWindow window)
   в Ecng.Interop.ManagedWinApiHelper.GetMenu(SystemWindow window)
   в StockSharp.Quik.QuikTerminal.Login(String login, String password, IPEndPoint address)
   в IronTrader.Core.LoginQuik(String login, String pass) в C:\Users\user_197\Desktop\IronTrader\IronTrader\Classes\Core.cs:строка 406
   в IronTrader.Views.MainWindow.LoginQuik(Object sender, EventArgs e) в C:\Users\user_197\Desktop\IronTrader\IronTrader\Views\MainWindow.xaml.cs:строка 235
   в System.Windows.Input.MouseButtonEventArgs.InvokeEventHandler(Delegate genericHandler, Object genericTarget)
   в System.Windows.RoutedEventArgs.InvokeHandler(Delegate handler, Object target)
   в System.Windows.RoutedEventHandlerInfo.InvokeHandler(Object target, RoutedEventArgs routedEventArgs)
   в System.Windows.EventRoute.InvokeHandlersImpl(Object source, RoutedEventArgs args, Boolean reRaised)
   в System.Windows.UIElement.RaiseEventImpl(DependencyObject sender, RoutedEventArgs args)
   в System.Windows.UIElement.RaiseTrustedEvent(RoutedEventArgs args)
   в System.Windows.UIElement.RaiseEvent(RoutedEventArgs args, Boolean trusted)
   в System.Windows.Input.InputManager.ProcessStagingArea()
   в System.Windows.Input.InputManager.ProcessInput(InputEventArgs input)
   в System.Windows.Input.InputProviderSite.ReportInput(InputReport inputReport)
   в System.Windows.Interop.HwndMouseInputProvider.ReportInput(IntPtr hwnd, InputMode mode, Int32 timestamp, RawMouseActions actions, Int32 x, Int32 y, Int32 wheel)
   в System.Windows.Interop.HwndMouseInputProvider.FilterMessage(IntPtr hwnd, WindowMessage msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
   в System.Windows.Interop.HwndSource.InputFilterMessage(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
   в MS.Win32.HwndWrapper.WndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
   в MS.Win32.HwndSubclass.DispatcherCallbackOperation(Object o)
   в System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
   в MS.Internal.Threading.ExceptionFilterHelper.TryCatchWhen(Object source, Delegate method, Object args, Int32 numArgs, Delegate catchHandler)
   в System.Windows.Threading.Dispatcher.InvokeImpl(DispatcherPriority priority, TimeSpan timeout, Delegate method, Object args, Int32 numArgs)
   в MS.Win32.HwndSubclass.SubclassWndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam)
   в System.Windows.Forms.UnsafeNativeMethods.CallWindowProc(IntPtr wndProc, IntPtr hWnd, Int32 msg, IntPtr wParam, IntPtr lParam)
   в System.Windows.Forms.NativeWindow.DefWndProc(Message& m)
   в System.Windows.Forms.Integration.WindowsFormsHost.ActivateWindowListener.WndProc(Message& m)
   в System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
   в MS.Win32.UnsafeNativeMethods.DispatchMessage(MSG& msg)
   в System.Windows.Threading.Dispatcher.PushFrameImpl(DispatcherFrame frame)
   в System.Windows.Threading.Dispatcher.PushFrame(DispatcherFrame frame)
   в System.Windows.Application.RunDispatcher(Object ignore)
   в System.Windows.Application.RunInternal(Window window)
   в System.Windows.Application.Run(Window window)
   в System.Windows.Application.Run()
   в IronTrader.App.Main() в C:\Users\user_197\Desktop\IronTrader\IronTrader\obj\x86\Debug\App.g.cs:строка 0
   в System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args)
   в System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
   в Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
   в System.Threading.ThreadHelper.ThreadStart_Context(Object state)
   в System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx)
   в System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
   в System.Threading.ThreadHelper.ThreadStart()

Thanks:

Mikhail Sukhov

Avatar
Date: 12/1/2011
Reply


Thanks:

Supervisor

Avatar
Date: 12/2/2011
Reply


Mikhail Sukhov: http://stocksharp.com/forum/1331/Attempted-to-read-or-write-protected-memory/ В той теме предлагается решение - перейти на S# 3.0 [biggrin]

Thanks:

Mikhail Sukhov

Avatar
Date: 12/2/2011
Reply


Supervisor:

Mikhail Sukhov: http://stocksharp.com/forum/1331/Attempted-to-read-or-write-protected-memory/ В той теме предлагается решение - перейти на S# 3.0 [biggrin]

Нужно всю ветку прочитать.

Thanks:

Supervisor

Avatar
Date: 12/2/2011
Reply


Mikhail Sukhov:

Maxim: Вопрос как его устранить? И считаете ли Вы это багом?

Устранить - использовать S# 3.0. И да, конечно же это баг. Получается этот баг не был исправлен в S# 3.0) Так или иначе, нашел причину: сделал окно с портфелем на QPILE не на весь экран и все заработало.

Thanks:

Mikhail Sukhov

Avatar
Date: 12/2/2011
Reply


Supervisor: Так или иначе, нашел причину: сделал окно с портфелем на QPILE не на весь экран и все заработало.

Ну вот видите что делает терпение и труд с багами. И сами находятся, и сами устраняются. Кстати, вашу ошибку я нашел через Гугл, который меня привел обратно на S# форум. Заняло буквально 5 минут. Еще 5 минут на чтение топика. Еще 15 минут на эсперименты. Итого, такие проблемы оптимально решать за 25 минут.[wink]

Thanks:

Alexander

Avatar
Date: 12/25/2011
Reply


Будет фикс в 4.0.11 Поломалось из-за перехода на .Net 4.0

Thanks:

MCTuTeJ|19951995

Avatar
Date: 12/26/2011
Reply


Такой вопрос - в какой момент меняется состояние QuikTerminal с IsConnected = false на IsConnected =true ? Просто при вызове terminal.Login(login.pw,server) это состояние вроде как меняется сразу, даже если не получается подключиться. Просто проблема в следующем: Для квмка есть три сервера, к которым он может подключиться. На момент запуска робота два из трех серверов заняты, но робот не знает какие именно. Он пытается перебрать все три сервера примерно так:


                
                if (!terminal.IsConnected)
                {   
                    var adresses = terminal.Addresses;
                    foreach (var ipEndPoint in adresses)
                    {
                        terminal.Login(login, password, ipEndPoint);


                        if (terminal.IsConnected) break;

                    }
                }

Но так не получается, потому что на после terminal.Login() terminal.IsConnected всегда получается true в не зависимости от результата подключения. Не подскажите куда копать надо ? Спасибо.

Thanks:

Alexander

Avatar
Date: 12/26/2011
Reply


Не так. QuikTerminal.IsConnected - это если что-то есть в статус баре в квике, тогда считаем что как минимум подключаемся

лучше смотреть на QuikTrader.IsConnected он смотрит совсем другое и как раз то, что нужно

Thanks: Maxim K. Supervisor
< 1 2 3  >

Attach files by dragging & dropping, , or pasting from the clipboard.

loading
clippy