User (Legacy) Posted April 23, 2004 Report Share Posted April 23, 2004 This happens when I'm starting my application. It is quite persistent. I'm running 6.2 with the latest patches. I used to see this in 6.0 but patches fixed it. Now I see it again in 6.2. Any thoughts? chartfx.dll!SoftwareFX.ChartFX.DataArray.get_Item(int index = 5) + 0xf bytes chartfx.dll!SoftwareFX.ChartFX.1O.BeginLoop() + 0x4b2 bytes chartfx.dll!SoftwareFX.ChartFX.0V.GX(SoftwareFX.ChartFX.1O 1V4 = {SoftwareFX.ChartFX.1O}, bool 1V5 = true, int 1V6 = 160, int 1V7 = 245, System.Drawing.Point 1V8 = {X=160 Y=245}, System.Object 1V9 = <undefined value>) + 0x192 bytes chartfx.dll!SoftwareFX.ChartFX.0V.GY(int 1VA = 160, int 1VB = 245, System.Object 1VC = <undefined value>) + 0x39f bytes chartfx.dll!SoftwareFX.ChartFX.0V.4B(System.Drawing.Point 1UF = {X=160 Y=245}, string 1UG = null) + 0x6b bytes chartfx.dll!SoftwareFX.ChartFX.J.5B(System.Object 15M = {SoftwareFX.ChartFX.I}, System.EventArgs 15N = {System.EventArgs}) + 0x78 bytes system.windows.forms.dll!System.Windows.Forms.Timer.OnTick(System.EventArgs e = {System.EventArgs}) + 0x1f bytes system.windows.forms.dll!System.Windows.Forms.Timer.DebuggableCallback(int hWnd = 0, int msg = 275, int idEvent = 14652, int dwTime = 773173546) + 0x2d bytes system.windows.forms.dll!System.Windows.Forms.Timer.set_Enabled(bool value = false) + 0x1b9 bytes system.windows.forms.dll!System.Windows.Forms.Timer.set_Interval(int value = 500) + 0xfe bytes chartfx.dll!SoftwareFX.ChartFX.I.I(System.EventHandler handler = {System.EventHandler}, int nextInterval = 500) + 0x2b bytes chartfx.dll!SoftwareFX.ChartFX.J.J(System.Windows.Forms.Control ctrl = {SoftwareFX.ChartFX.0V}) + 0xc6 bytes chartfx.dll!SoftwareFX.ChartFX.0V.0V(SoftwareFX.ChartFX.Chart chart = {SoftwareFX.ChartFX.Chart}) + 0x72 bytes chartfx.dll!SoftwareFX.ChartFX.ChartWinForms.E0() + 0x53 bytes chartfx.dll!SoftwareFX.ChartFX.ChartCore.DZ() + 0x1f4 bytes chartfx.dll!SoftwareFX.ChartFX.Chart.Chart() + 0x95 bytes Link to comment Share on other sites More sharing options...
Software FX Posted April 23, 2004 Report Share Posted April 23, 2004 Hi, I can see where this could happen but I not fully understand how you created this scenario. This is the story, we create a timer to handle our tooltips, this timer is created when the chart is created. In our current code we enable the timer as soon as it is created (I am checking as this does not seem to be needed). Now according to your stack, We create and enable the timer, and the timer gets fired when the chart is not ready (I am guessing your form is not visible and you have not passed data to the chart), the strange thing is that if AFAIK this timer should not be firing as your thread is still busy processing the Form constructor, InitializeComponent, etc. We will attack this issue from 2 fronts a) Trying not to enable the timer until needed Guarding our function so that it does not crash even if called when the chart is not "ready" I tried a couple of ways to duplicate your issue (so that we can make sure option b works), e.g. Adding a sleep to my test form's constructor, setting my app to be multithreaded, etc. with no success. When the timer fires the chart is ready to handle the event. I even tried in both single-processor and dual-processor machines. Can you send us an exe that reproduces this issue (hopefully it will not need a complex database configuration or work on confidential data). This would help us understand this scenario and make sure we really fix this issue. -- Regards, JC Software FX Support "Matt C." <matt@serviceintegrity.com> wrote in message news:5irwK4TKEHA.600@webserver3.softwarefx.com... > This happens when I'm starting my application. It is quite persistent. I'm > running 6.2 with the latest patches. > I used to see this in 6.0 but patches fixed it. Now I see it again in 6.2. > Any thoughts? > > chartfx.dll!SoftwareFX.ChartFX.DataArray.get_Item(int index = 5) + 0xf bytes > chartfx.dll!SoftwareFX.ChartFX.1O.BeginLoop() + 0x4b2 bytes > > chartfx.dll!SoftwareFX.ChartFX.0V.GX(SoftwareFX.ChartFX.1O 1V4 = > {SoftwareFX.ChartFX.1O}, bool 1V5 = true, int 1V6 = 160, int 1V7 = 245, > System.Drawing.Point 1V8 = {X=160 Y=245}, System.Object 1V9 = <undefined > value>) + 0x192 bytes > > chartfx.dll!SoftwareFX.ChartFX.0V.GY(int 1VA = 160, int 1VB = > 245, System.Object 1VC = <undefined value>) + 0x39f bytes > > chartfx.dll!SoftwareFX.ChartFX.0V.4B(System.Drawing.Point 1UF = > {X=160 Y=245}, string 1UG = null) + 0x6b bytes > > chartfx.dll!SoftwareFX.ChartFX.J.5B(System.Object 15M = > {SoftwareFX.ChartFX.I}, System.EventArgs 15N = {System.EventArgs}) + 0x78 > bytes > > > system.windows.forms.dll!System.Windows.Forms.Timer.OnTick(System.EventArgs > e = {System.EventArgs}) + 0x1f bytes > > > system.windows.forms.dll!System.Windows.Forms.Timer.DebuggableCallback(int > hWnd = 0, int msg = 275, int idEvent = 14652, int dwTime = 773173546) + 0x2d > bytes > > > system.windows.forms.dll!System.Windows.Forms.Timer.set_Enabled(bool value = > false) + 0x1b9 bytes > > > system.windows.forms.dll!System.Windows.Forms.Timer.set_Interval(int value = > 500) + 0xfe bytes > > chartfx.dll!SoftwareFX.ChartFX.I.I(System.EventHandler handler = > {System.EventHandler}, int nextInterval = 500) + 0x2b bytes > > chartfx.dll!SoftwareFX.ChartFX.J.J(System.Windows.Forms.Control > ctrl = {SoftwareFX.ChartFX.0V}) + 0xc6 bytes > > chartfx.dll!SoftwareFX.ChartFX.0V.0V(SoftwareFX.ChartFX.Chart > chart = {SoftwareFX.ChartFX.Chart}) + 0x72 bytes > > chartfx.dll!SoftwareFX.ChartFX.ChartWinForms.E0() + 0x53 bytes > > chartfx.dll!SoftwareFX.ChartFX.ChartCore.DZ() + 0x1f4 bytes > > chartfx.dll!SoftwareFX.ChartFX.Chart.Chart() + 0x95 bytes > > Link to comment Share on other sites More sharing options...
Software FX Posted April 23, 2004 Report Share Posted April 23, 2004 I forgot to mention, if you can, please send the exe (and any required assemblies) to support@softwarefx.online.com (removing the online domain) -- Regards, JC Software FX Support "Matt C." <matt@serviceintegrity.com> wrote in message news:5irwK4TKEHA.600@webserver3.softwarefx.com... > This happens when I'm starting my application. It is quite persistent. I'm > running 6.2 with the latest patches. > I used to see this in 6.0 but patches fixed it. Now I see it again in 6.2. > Any thoughts? > > chartfx.dll!SoftwareFX.ChartFX.DataArray.get_Item(int index = 5) + 0xf bytes > chartfx.dll!SoftwareFX.ChartFX.1O.BeginLoop() + 0x4b2 bytes > > chartfx.dll!SoftwareFX.ChartFX.0V.GX(SoftwareFX.ChartFX.1O 1V4 = > {SoftwareFX.ChartFX.1O}, bool 1V5 = true, int 1V6 = 160, int 1V7 = 245, > System.Drawing.Point 1V8 = {X=160 Y=245}, System.Object 1V9 = <undefined > value>) + 0x192 bytes > > chartfx.dll!SoftwareFX.ChartFX.0V.GY(int 1VA = 160, int 1VB = > 245, System.Object 1VC = <undefined value>) + 0x39f bytes > > chartfx.dll!SoftwareFX.ChartFX.0V.4B(System.Drawing.Point 1UF = > {X=160 Y=245}, string 1UG = null) + 0x6b bytes > > chartfx.dll!SoftwareFX.ChartFX.J.5B(System.Object 15M = > {SoftwareFX.ChartFX.I}, System.EventArgs 15N = {System.EventArgs}) + 0x78 > bytes > > > system.windows.forms.dll!System.Windows.Forms.Timer.OnTick(System.EventArgs > e = {System.EventArgs}) + 0x1f bytes > > > system.windows.forms.dll!System.Windows.Forms.Timer.DebuggableCallback(int > hWnd = 0, int msg = 275, int idEvent = 14652, int dwTime = 773173546) + 0x2d > bytes > > > system.windows.forms.dll!System.Windows.Forms.Timer.set_Enabled(bool value = > false) + 0x1b9 bytes > > > system.windows.forms.dll!System.Windows.Forms.Timer.set_Interval(int value = > 500) + 0xfe bytes > > chartfx.dll!SoftwareFX.ChartFX.I.I(System.EventHandler handler = > {System.EventHandler}, int nextInterval = 500) + 0x2b bytes > > chartfx.dll!SoftwareFX.ChartFX.J.J(System.Windows.Forms.Control > ctrl = {SoftwareFX.ChartFX.0V}) + 0xc6 bytes > > chartfx.dll!SoftwareFX.ChartFX.0V.0V(SoftwareFX.ChartFX.Chart > chart = {SoftwareFX.ChartFX.Chart}) + 0x72 bytes > > chartfx.dll!SoftwareFX.ChartFX.ChartWinForms.E0() + 0x53 bytes > > chartfx.dll!SoftwareFX.ChartFX.ChartCore.DZ() + 0x1f4 bytes > > chartfx.dll!SoftwareFX.ChartFX.Chart.Chart() + 0x95 bytes > > Link to comment Share on other sites More sharing options...
User (Legacy) Posted April 28, 2004 Author Report Share Posted April 28, 2004 Sorry, our app is very complex and it would take days to get it to you and get you up and running with it. I too cannot reproduce this problem in a simple isolated application. I can tell you that we have the charts on panels and that they are in dockable windows using DevComponents DotNetBar control. On top of this we have several charts. Some are hidden, some are not. I can tell you that this problem happens right away when we start the app, not after running successfully. We update the charts from background threads, etc... but that process doesn't even start until all the charts are constructed. If there is anything I can do from here to help you weed out the problem let me know. I'd be happy to load your symbols and debug it from here if you need me to. "SoftwareFX Support" <noreply@softwarefx.com> wrote in message news:6O9sF7UKEHA.600@webserver3.softwarefx.com... > Hi, I can see where this could happen but I not fully understand how you > created this scenario. > > This is the story, we create a timer to handle our tooltips, this timer is > created when the chart is created. In our current code we enable the timer > as soon as it is created (I am checking as this does not seem to be needed). > Now according to your stack, We create and enable the timer, and the timer > gets fired when the chart is not ready (I am guessing your form is not > visible and you have not passed data to the chart), the strange thing is > that if AFAIK this timer should not be firing as your thread is still busy > processing the Form constructor, InitializeComponent, etc. > > We will attack this issue from 2 fronts > > a) Trying not to enable the timer until needed > Guarding our function so that it does not crash even if called when the > chart is not "ready" > > I tried a couple of ways to duplicate your issue (so that we can make sure > option b works), e.g. Adding a sleep to my test form's constructor, setting > my app to be multithreaded, etc. with no success. When the timer fires the > chart is ready to handle the event. I even tried in both single-processor > and dual-processor machines. > > Can you send us an exe that reproduces this issue (hopefully it will not > need a complex database configuration or work on confidential data). This > would help us understand this scenario and make sure we really fix this > issue. > > -- > Regards, > > JC > Software FX Support > "Matt C." <matt@serviceintegrity.com> wrote in message > news:5irwK4TKEHA.600@webserver3.softwarefx.com... > > This happens when I'm starting my application. It is quite persistent. > I'm > > running 6.2 with the latest patches. > > I used to see this in 6.0 but patches fixed it. Now I see it again in > 6.2. > > Any thoughts? > > > > chartfx.dll!SoftwareFX.ChartFX.DataArray.get_Item(int index = 5) + 0xf > bytes > > chartfx.dll!SoftwareFX.ChartFX.1O.BeginLoop() + 0x4b2 bytes > > > > chartfx.dll!SoftwareFX.ChartFX.0V.GX(SoftwareFX.ChartFX.1O 1V4 > = > > {SoftwareFX.ChartFX.1O}, bool 1V5 = true, int 1V6 = 160, int 1V7 = 245, > > System.Drawing.Point 1V8 = {X=160 Y=245}, System.Object 1V9 = <undefined > > value>) + 0x192 bytes > > > > chartfx.dll!SoftwareFX.ChartFX.0V.GY(int 1VA = 160, int 1VB = > > 245, System.Object 1VC = <undefined value>) + 0x39f bytes > > > > chartfx.dll!SoftwareFX.ChartFX.0V.4B(System.Drawing.Point 1UF > = > > {X=160 Y=245}, string 1UG = null) + 0x6b bytes > > > > chartfx.dll!SoftwareFX.ChartFX.J.5B(System.Object 15M = > > {SoftwareFX.ChartFX.I}, System.EventArgs 15N = {System.EventArgs}) + 0x78 > > bytes > > > > > > > system.windows.forms.dll!System.Windows.Forms.Timer.OnTick(System.EventArgs > > e = {System.EventArgs}) + 0x1f bytes > > > > > > system.windows.forms.dll!System.Windows.Forms.Timer.DebuggableCallback(int > > hWnd = 0, int msg = 275, int idEvent = 14652, int dwTime = 773173546) + > 0x2d > > bytes > > > > > > system.windows.forms.dll!System.Windows.Forms.Timer.set_Enabled(bool value > = > > false) + 0x1b9 bytes > > > > > > system.windows.forms.dll!System.Windows.Forms.Timer.set_Interval(int value > = > > 500) + 0xfe bytes > > > > chartfx.dll!SoftwareFX.ChartFX.I.I(System.EventHandler handler > = > > {System.EventHandler}, int nextInterval = 500) + 0x2b bytes > > > > > chartfx.dll!SoftwareFX.ChartFX.J.J(System.Windows.Forms.Control > > ctrl = {SoftwareFX.ChartFX.0V}) + 0xc6 bytes > > > > chartfx.dll!SoftwareFX.ChartFX.0V.0V(SoftwareFX.ChartFX.Chart > > chart = {SoftwareFX.ChartFX.Chart}) + 0x72 bytes > > > > chartfx.dll!SoftwareFX.ChartFX.ChartWinForms.E0() + 0x53 bytes > > > > chartfx.dll!SoftwareFX.ChartFX.ChartCore.DZ() + 0x1f4 bytes > > > > chartfx.dll!SoftwareFX.ChartFX.Chart.Chart() + 0x95 bytes > > > > > > SoftFx.doc Link to comment Share on other sites More sharing options...
Software FX Posted April 28, 2004 Report Share Posted April 28, 2004 Are you creating the chart on the UI thread ? If you are not, this could explain the fact that we are creating the timer and it is firing right away. ChartFX as any other Windows Form Control should only be created/manipulated on the main (UI) thread, if you have a lengthy process, you should invoke it in a worker thread and then modify the chart in the UI thread. You can use Control.Invoke to make sure you execute the chart manipulation in the UI thread. As I said in my first post, we will be fixing our code as it is not necessary to enable the timer in the constructor but if you are manipulating the chart from multiple threads you may find other concurrency issues in the near future. -- Regards, JC Software FX Support "Matt C." <matt@serviceintegrity.com> wrote in message news:9U0rfRSLEHA.600@webserver3.softwarefx.com... > Sorry, our app is very complex and it would take days to get it to you and > get you up and running with it. > I too cannot reproduce this problem in a simple isolated application. I can > tell you that we have the charts > on panels and that they are in dockable windows using DevComponents > DotNetBar control. On top of this > we have several charts. Some are hidden, some are not. I can tell you > that this problem happens right away > when we start the app, not after running successfully. We update the charts > from background threads, etc... > but that process doesn't even start until all the charts are constructed. > > If there is anything I can do from here to help you weed out the problem let > me know. I'd be happy to load your > symbols and debug it from here if you need me to. > > > "SoftwareFX Support" <noreply@softwarefx.com> wrote in message > news:6O9sF7UKEHA.600@webserver3.softwarefx.com... > > Hi, I can see where this could happen but I not fully understand how you > > created this scenario. > > > > This is the story, we create a timer to handle our tooltips, this timer is > > created when the chart is created. In our current code we enable the timer > > as soon as it is created (I am checking as this does not seem to be > needed). > > Now according to your stack, We create and enable the timer, and the timer > > gets fired when the chart is not ready (I am guessing your form is not > > visible and you have not passed data to the chart), the strange thing is > > that if AFAIK this timer should not be firing as your thread is still busy > > processing the Form constructor, InitializeComponent, etc. > > > > We will attack this issue from 2 fronts > > > > a) Trying not to enable the timer until needed > > Guarding our function so that it does not crash even if called when the > > chart is not "ready" > > > > I tried a couple of ways to duplicate your issue (so that we can make sure > > option b works), e.g. Adding a sleep to my test form's constructor, > setting > > my app to be multithreaded, etc. with no success. When the timer fires the > > chart is ready to handle the event. I even tried in both single-processor > > and dual-processor machines. > > > > Can you send us an exe that reproduces this issue (hopefully it will not > > need a complex database configuration or work on confidential data). This > > would help us understand this scenario and make sure we really fix this > > issue. > > > > -- > > Regards, > > > > JC > > Software FX Support > > "Matt C." <matt@serviceintegrity.com> wrote in message > > news:5irwK4TKEHA.600@webserver3.softwarefx.com... > > > This happens when I'm starting my application. It is quite persistent. > > I'm > > > running 6.2 with the latest patches. > > > I used to see this in 6.0 but patches fixed it. Now I see it again in > > 6.2. > > > Any thoughts? > > > > > > chartfx.dll!SoftwareFX.ChartFX.DataArray.get_Item(int index = 5) + 0xf > > bytes > > > chartfx.dll!SoftwareFX.ChartFX.1O.BeginLoop() + 0x4b2 bytes > > > > > > chartfx.dll!SoftwareFX.ChartFX.0V.GX(SoftwareFX.ChartFX.1O > 1V4 > > = > > > {SoftwareFX.ChartFX.1O}, bool 1V5 = true, int 1V6 = 160, int 1V7 = 245, > > > System.Drawing.Point 1V8 = {X=160 Y=245}, System.Object 1V9 = <undefined > > > value>) + 0x192 bytes > > > > > > chartfx.dll!SoftwareFX.ChartFX.0V.GY(int 1VA = 160, int 1VB > = > > > 245, System.Object 1VC = <undefined value>) + 0x39f bytes > > > > > > chartfx.dll!SoftwareFX.ChartFX.0V.4B(System.Drawing.Point > 1UF > > = > > > {X=160 Y=245}, string 1UG = null) + 0x6b bytes > > > > > > chartfx.dll!SoftwareFX.ChartFX.J.5B(System.Object 15M = > > > {SoftwareFX.ChartFX.I}, System.EventArgs 15N = {System.EventArgs}) + > 0x78 > > > bytes > > > > > > > > > > > > system.windows.forms.dll!System.Windows.Forms.Timer.OnTick(System.EventArgs > > > e = {System.EventArgs}) + 0x1f bytes > > > > > > > > > > system.windows.forms.dll!System.Windows.Forms.Timer.DebuggableCallback(int > > > hWnd = 0, int msg = 275, int idEvent = 14652, int dwTime = 773173546) + > > 0x2d > > > bytes > > > > > > > > > system.windows.forms.dll!System.Windows.Forms.Timer.set_Enabled(bool > value > > = > > > false) + 0x1b9 bytes > > > > > > > > > system.windows.forms.dll!System.Windows.Forms.Timer.set_Interval(int > value > > = > > > 500) + 0xfe bytes > > > > > > chartfx.dll!SoftwareFX.ChartFX.I.I(System.EventHandler > handler > > = > > > {System.EventHandler}, int nextInterval = 500) + 0x2b bytes > > > > > > > > chartfx.dll!SoftwareFX.ChartFX.J.J(System.Windows.Forms.Control > > > ctrl = {SoftwareFX.ChartFX.0V}) + 0xc6 bytes > > > > > > > chartfx.dll!SoftwareFX.ChartFX.0V.0V(SoftwareFX.ChartFX.Chart > > > chart = {SoftwareFX.ChartFX.Chart}) + 0x72 bytes > > > > > > chartfx.dll!SoftwareFX.ChartFX.ChartWinForms.E0() + 0x53 > bytes > > > > > > chartfx.dll!SoftwareFX.ChartFX.ChartCore.DZ() + 0x1f4 bytes > > > > > > chartfx.dll!SoftwareFX.ChartFX.Chart.Chart() + 0x95 bytes > > > > > > > > > > > > Link to comment Share on other sites More sharing options...
User (Legacy) Posted May 6, 2004 Author Report Share Posted May 6, 2004 Yes of course... And the threads that update the data poke the UI thread to do the actual updates too. "SoftwareFX Support" <noreply@softwarefx.com> wrote in message news:%236uEWKULEHA.2900@webserver3.softwarefx.com... > Are you creating the chart on the UI thread ? If you are not, this could > explain the fact that we are creating the timer and it is firing right away. > > ChartFX as any other Windows Form Control should only be created/manipulated > on the main (UI) thread, if you have a lengthy process, you should invoke it > in a worker thread and then modify the chart in the UI thread. You can use > Control.Invoke to make sure you execute the chart manipulation in the UI > thread. > > As I said in my first post, we will be fixing our code as it is not > necessary to enable the timer in the constructor but if you are manipulating > the chart from multiple threads you may find other concurrency issues in the > near future. > > -- > Regards, > > JC > Software FX Support > "Matt C." <matt@serviceintegrity.com> wrote in message > news:9U0rfRSLEHA.600@webserver3.softwarefx.com... > > Sorry, our app is very complex and it would take days to get it to you > and > > get you up and running with it. > > I too cannot reproduce this problem in a simple isolated application. I > can > > tell you that we have the charts > > on panels and that they are in dockable windows using DevComponents > > DotNetBar control. On top of this > > we have several charts. Some are hidden, some are not. I can tell you > > that this problem happens right away > > when we start the app, not after running successfully. We update the > charts > > from background threads, etc... > > but that process doesn't even start until all the charts are constructed. > > > > If there is anything I can do from here to help you weed out the problem > let > > me know. I'd be happy to load your > > symbols and debug it from here if you need me to. > > > > > > "SoftwareFX Support" <noreply@softwarefx.com> wrote in message > > news:6O9sF7UKEHA.600@webserver3.softwarefx.com... > > > Hi, I can see where this could happen but I not fully understand how you > > > created this scenario. > > > > > > This is the story, we create a timer to handle our tooltips, this timer > is > > > created when the chart is created. In our current code we enable the > timer > > > as soon as it is created (I am checking as this does not seem to be > > needed). > > > Now according to your stack, We create and enable the timer, and the > timer > > > gets fired when the chart is not ready (I am guessing your form is not > > > visible and you have not passed data to the chart), the strange thing is > > > that if AFAIK this timer should not be firing as your thread is still > busy > > > processing the Form constructor, InitializeComponent, etc. > > > > > > We will attack this issue from 2 fronts > > > > > > a) Trying not to enable the timer until needed > > > Guarding our function so that it does not crash even if called when > the > > > chart is not "ready" > > > > > > I tried a couple of ways to duplicate your issue (so that we can make > sure > > > option b works), e.g. Adding a sleep to my test form's constructor, > > setting > > > my app to be multithreaded, etc. with no success. When the timer fires > the > > > chart is ready to handle the event. I even tried in both > single-processor > > > and dual-processor machines. > > > > > > Can you send us an exe that reproduces this issue (hopefully it will not > > > need a complex database configuration or work on confidential data). > This > > > would help us understand this scenario and make sure we really fix this > > > issue. > > > > > > -- > > > Regards, > > > > > > JC > > > Software FX Support > > > "Matt C." <matt@serviceintegrity.com> wrote in message > > > news:5irwK4TKEHA.600@webserver3.softwarefx.com... > > > > This happens when I'm starting my application. It is quite > persistent. > > > I'm > > > > running 6.2 with the latest patches. > > > > I used to see this in 6.0 but patches fixed it. Now I see it again in > > > 6.2. > > > > Any thoughts? > > > > > > > > chartfx.dll!SoftwareFX.ChartFX.DataArray.get_Item(int index = 5) + 0xf > > > bytes > > > > chartfx.dll!SoftwareFX.ChartFX.1O.BeginLoop() + 0x4b2 > bytes > > > > > > > > chartfx.dll!SoftwareFX.ChartFX.0V.GX(SoftwareFX.ChartFX.1O > > 1V4 > > > = > > > > {SoftwareFX.ChartFX.1O}, bool 1V5 = true, int 1V6 = 160, int 1V7 = > 245, > > > > System.Drawing.Point 1V8 = {X=160 Y=245}, System.Object 1V9 = > <undefined > > > > value>) + 0x192 bytes > > > > > > > > chartfx.dll!SoftwareFX.ChartFX.0V.GY(int 1VA = 160, int > 1VB > > = > > > > 245, System.Object 1VC = <undefined value>) + 0x39f bytes > > > > > > > > chartfx.dll!SoftwareFX.ChartFX.0V.4B(System.Drawing.Point > > 1UF > > > = > > > > {X=160 Y=245}, string 1UG = null) + 0x6b bytes > > > > > > > > chartfx.dll!SoftwareFX.ChartFX.J.5B(System.Object 15M = > > > > {SoftwareFX.ChartFX.I}, System.EventArgs 15N = {System.EventArgs}) + > > 0x78 > > > > bytes > > > > > > > > > > > > > > > > > > system.windows.forms.dll!System.Windows.Forms.Timer.OnTick(System.EventArgs > > > > e = {System.EventArgs}) + 0x1f bytes > > > > > > > > > > > > > > system.windows.forms.dll!System.Windows.Forms.Timer.DebuggableCallback(int > > > > hWnd = 0, int msg = 275, int idEvent = 14652, int dwTime = 773173546) > + > > > 0x2d > > > > bytes > > > > > > > > > > > > system.windows.forms.dll!System.Windows.Forms.Timer.set_Enabled(bool > > value > > > = > > > > false) + 0x1b9 bytes > > > > > > > > > > > > system.windows.forms.dll!System.Windows.Forms.Timer.set_Interval(int > > value > > > = > > > > 500) + 0xfe bytes > > > > > > > > chartfx.dll!SoftwareFX.ChartFX.I.I(System.EventHandler > > handler > > > = > > > > {System.EventHandler}, int nextInterval = 500) + 0x2b bytes > > > > > > > > > > > chartfx.dll!SoftwareFX.ChartFX.J.J(System.Windows.Forms.Control > > > > ctrl = {SoftwareFX.ChartFX.0V}) + 0xc6 bytes > > > > > > > > > > chartfx.dll!SoftwareFX.ChartFX.0V.0V(SoftwareFX.ChartFX.Chart > > > > chart = {SoftwareFX.ChartFX.Chart}) + 0x72 bytes > > > > > > > > chartfx.dll!SoftwareFX.ChartFX.ChartWinForms.E0() + 0x53 > > bytes > > > > > > > > chartfx.dll!SoftwareFX.ChartFX.ChartCore.DZ() + 0x1f4 > bytes > > > > > > > > chartfx.dll!SoftwareFX.ChartFX.Chart.Chart() + 0x95 bytes > > > > > > > > > > > > > > > > > > > > Link to comment Share on other sites More sharing options...
Software FX Posted May 6, 2004 Report Share Posted May 6, 2004 We just uploaded a new hotfix to our support site. In this hotfix we are delaying enabling the timer until it is actually required. Is it very difficult for us to also add code to the routine that is generating the exception because in the code path there seems to be enough checks to make sure the chart actually has data so we are afraid this is happening because of threading issues. To download the hotfix please send an email to support at softwarefx , if the problem persists after the hotfix I would recommend to make sure that your "chart" code is actually being executed in the UI thread. If you can somehow sketch how you interact with the charts (how you create them, when do you pass the data, etc.) we may be able to duplicate this issue. -- Regards, JC Software FX Support "Matt C." <matt@serviceintegrity.com> wrote in message news:DRg$o21MEHA.600@webserver3.softwarefx.com... > Yes of course... And the threads that update the data poke the UI thread to > do the actual updates too. > > > "SoftwareFX Support" <noreply@softwarefx.com> wrote in message > news:%236uEWKULEHA.2900@webserver3.softwarefx.com... > > Are you creating the chart on the UI thread ? If you are not, this could > > explain the fact that we are creating the timer and it is firing right > away. > > > > ChartFX as any other Windows Form Control should only be > created/manipulated > > on the main (UI) thread, if you have a lengthy process, you should invoke > it > > in a worker thread and then modify the chart in the UI thread. You can use > > Control.Invoke to make sure you execute the chart manipulation in the UI > > thread. > > > > As I said in my first post, we will be fixing our code as it is not > > necessary to enable the timer in the constructor but if you are > manipulating > > the chart from multiple threads you may find other concurrency issues in > the > > near future. > > > > -- > > Regards, > > > > JC > > Software FX Support > > "Matt C." <matt@serviceintegrity.com> wrote in message > > news:9U0rfRSLEHA.600@webserver3.softwarefx.com... > > > Sorry, our app is very complex and it would take days to get it to you > > and > > > get you up and running with it. > > > I too cannot reproduce this problem in a simple isolated application. I > > can > > > tell you that we have the charts > > > on panels and that they are in dockable windows using DevComponents > > > DotNetBar control. On top of this > > > we have several charts. Some are hidden, some are not. I can tell you > > > that this problem happens right away > > > when we start the app, not after running successfully. We update the > > charts > > > from background threads, etc... > > > but that process doesn't even start until all the charts are > constructed. > > > > > > If there is anything I can do from here to help you weed out the problem > > let > > > me know. I'd be happy to load your > > > symbols and debug it from here if you need me to. > > > > > > > > > "SoftwareFX Support" <noreply@softwarefx.com> wrote in message > > > news:6O9sF7UKEHA.600@webserver3.softwarefx.com... > > > > Hi, I can see where this could happen but I not fully understand how > you > > > > created this scenario. > > > > > > > > This is the story, we create a timer to handle our tooltips, this > timer > > is > > > > created when the chart is created. In our current code we enable the > > timer > > > > as soon as it is created (I am checking as this does not seem to be > > > needed). > > > > Now according to your stack, We create and enable the timer, and the > > timer > > > > gets fired when the chart is not ready (I am guessing your form is not > > > > visible and you have not passed data to the chart), the strange thing > is > > > > that if AFAIK this timer should not be firing as your thread is still > > busy > > > > processing the Form constructor, InitializeComponent, etc. > > > > > > > > We will attack this issue from 2 fronts > > > > > > > > a) Trying not to enable the timer until needed > > > > Guarding our function so that it does not crash even if called when > > the > > > > chart is not "ready" > > > > > > > > I tried a couple of ways to duplicate your issue (so that we can make > > sure > > > > option b works), e.g. Adding a sleep to my test form's constructor, > > > setting > > > > my app to be multithreaded, etc. with no success. When the timer fires > > the > > > > chart is ready to handle the event. I even tried in both > > single-processor > > > > and dual-processor machines. > > > > > > > > Can you send us an exe that reproduces this issue (hopefully it will > not > > > > need a complex database configuration or work on confidential data). > > This > > > > would help us understand this scenario and make sure we really fix > this > > > > issue. > > > > > > > > -- > > > > Regards, > > > > > > > > JC > > > > Software FX Support > > > > "Matt C." <matt@serviceintegrity.com> wrote in message > > > > news:5irwK4TKEHA.600@webserver3.softwarefx.com... > > > > > This happens when I'm starting my application. It is quite > > persistent. > > > > I'm > > > > > running 6.2 with the latest patches. > > > > > I used to see this in 6.0 but patches fixed it. Now I see it again > in > > > > 6.2. > > > > > Any thoughts? > > > > > > > > > > chartfx.dll!SoftwareFX.ChartFX.DataArray.get_Item(int index = 5) + > 0xf > > > > bytes > > > > > chartfx.dll!SoftwareFX.ChartFX.1O.BeginLoop() + 0x4b2 > > bytes > > > > > > > > > > > chartfx.dll!SoftwareFX.ChartFX.0V.GX(SoftwareFX.ChartFX.1O > > > 1V4 > > > > = > > > > > {SoftwareFX.ChartFX.1O}, bool 1V5 = true, int 1V6 = 160, int 1V7 = > > 245, > > > > > System.Drawing.Point 1V8 = {X=160 Y=245}, System.Object 1V9 = > > <undefined > > > > > value>) + 0x192 bytes > > > > > > > > > > chartfx.dll!SoftwareFX.ChartFX.0V.GY(int 1VA = 160, int > > 1VB > > > = > > > > > 245, System.Object 1VC = <undefined value>) + 0x39f bytes > > > > > > > > > > > chartfx.dll!SoftwareFX.ChartFX.0V.4B(System.Drawing.Point > > > 1UF > > > > = > > > > > {X=160 Y=245}, string 1UG = null) + 0x6b bytes > > > > > > > > > > chartfx.dll!SoftwareFX.ChartFX.J.5B(System.Object 15M = > > > > > {SoftwareFX.ChartFX.I}, System.EventArgs 15N = {System.EventArgs}) + > > > 0x78 > > > > > bytes > > > > > > > > > > > > > > > > > > > > > > > > > system.windows.forms.dll!System.Windows.Forms.Timer.OnTick(System.EventArgs > > > > > e = {System.EventArgs}) + 0x1f bytes > > > > > > > > > > > > > > > > > > > system.windows.forms.dll!System.Windows.Forms.Timer.DebuggableCallback(int > > > > > hWnd = 0, int msg = 275, int idEvent = 14652, int dwTime = > 773173546) > > + > > > > 0x2d > > > > > bytes > > > > > > > > > > > > > > > system.windows.forms.dll!System.Windows.Forms.Timer.set_Enabled(bool > > > value > > > > = > > > > > false) + 0x1b9 bytes > > > > > > > > > > > > > > > system.windows.forms.dll!System.Windows.Forms.Timer.set_Interval(int > > > value > > > > = > > > > > 500) + 0xfe bytes > > > > > > > > > > chartfx.dll!SoftwareFX.ChartFX.I.I(System.EventHandler > > > handler > > > > = > > > > > {System.EventHandler}, int nextInterval = 500) + 0x2b bytes > > > > > > > > > > > > > > chartfx.dll!SoftwareFX.ChartFX.J.J(System.Windows.Forms.Control > > > > > ctrl = {SoftwareFX.ChartFX.0V}) + 0xc6 bytes > > > > > > > > > > > > > chartfx.dll!SoftwareFX.ChartFX.0V.0V(SoftwareFX.ChartFX.Chart > > > > > chart = {SoftwareFX.ChartFX.Chart}) + 0x72 bytes > > > > > > > > > > chartfx.dll!SoftwareFX.ChartFX.ChartWinForms.E0() + 0x53 > > > bytes > > > > > > > > > > chartfx.dll!SoftwareFX.ChartFX.ChartCore.DZ() + 0x1f4 > > bytes > > > > > > > > > > chartfx.dll!SoftwareFX.ChartFX.Chart.Chart() + 0x95 > bytes > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Link to comment Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.