Page 1 of 1

Serialization of FastLine Series

Posted: Wed Sep 16, 2009 4:24 am
by 13051032
Is there a way I can serialize an array of fastline series? I tried the following, but the runtime gives the following error.

Code: Select all

System.Runtime.Serialization.SerializationException was unhandled
  Message="Type 'System.ComponentModel.Component' in Assembly 'System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' is not marked as serializable."
  Source="mscorlib"
  StackTrace:
       at System.Runtime.Serialization.FormatterServices.InternalGetSerializableMembers(RuntimeType type)
       at System.Runtime.Serialization.FormatterServices.GetSerializableMembers(Type type, StreamingContext context)
       at System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo.InitMemberInfo()
       at System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo.InitSerialize(Object obj, ISurrogateSelector surrogateSelector, StreamingContext context, SerObjectInfoInit serObjectInfoInit, IFormatterConverter converter, ObjectWriter objectWriter)
       at System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo.Serialize(Object obj, ISurrogateSelector surrogateSelector, StreamingContext context, SerObjectInfoInit serObjectInfoInit, IFormatterConverter converter, ObjectWriter objectWriter)
       at System.Runtime.Serialization.Formatters.Binary.ObjectWriter.Write(WriteObjectInfo objectInfo, NameInfo memberNameInfo, NameInfo typeNameInfo)
       at System.Runtime.Serialization.Formatters.Binary.ObjectWriter.Serialize(Object graph, Header[] inHeaders, __BinaryWriter serWriter, Boolean fCheck)
       at System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Serialize(Stream serializationStream, Object graph, Header[] headers, Boolean fCheck)
       at System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Serialize(Stream serializationStream, Object graph)
       at CS_SubChart.Form1.SaveBtn_Click(Object sender, EventArgs e) in D:\MasterStation2008\Scratchs-Prototype\CS-SubChart\CS-SubChart\Form1.cs:line 120
       at System.Windows.Forms.Control.OnClick(EventArgs e)
       at System.Windows.Forms.Button.OnClick(EventArgs e)
       at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
       at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
       at System.Windows.Forms.Control.WndProc(Message& m)
       at System.Windows.Forms.ButtonBase.WndProc(Message& m)
       at System.Windows.Forms.Button.WndProc(Message& m)
       at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
       at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
       at System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
       at System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)
       at System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(Int32 dwComponentID, Int32 reason, Int32 pvLoopData)
       at System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
       at System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
       at System.Windows.Forms.Application.Run(Form mainForm)
       at CS_SubChart.Program.Main() in D:\CS-SubChart\CS-SubChart\Program.cs:line 17
       at System.AppDomain._nExecuteAssembly(Assembly assembly, String[] args)
       at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
       at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
       at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
       at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
       at System.Threading.ThreadHelper.ThreadStart()

The code I used is:

Code: Select all

[Serializable()] 
    class MySerializable: ISerializable 
    {
        public Steema.TeeChart.Styles.FastLine fastline1;
        public MySerializable()
        {
            fastline1 = null;
        }

        //Serialization function.
        public void GetObjectData(SerializationInfo info, StreamingContext ctxt)
        {
            info.AddValue("fastline1", fastline1);
        }
        //Deserialization constructor.
        public MySerializable(SerializationInfo info, StreamingContext ctxt)
        {
            //Get the values from info and assign them to the appropriate properties
            fastline1 = (Steema.TeeChart.Styles.FastLine)info.GetValue("fastline1", typeof(Steema.TeeChart.Styles.FastLine));
        }

    }

Re: Serialization of FastLine Series

Posted: Wed Sep 16, 2009 8:00 am
by narcis
Hi asupriya,

For serialization of custom objects please read tutorial 19. Tutorials can be found at TeeChart's program group.

Thanks in advance.

Re: Serialization of FastLine Series

Posted: Wed Sep 16, 2009 1:39 pm
by 13051032
Thanks. I like to serialize simply the Fastline series array and not the whole chart (as shown in the Tutorial 19). Is there a way to do so?

I need to save multiple charts data into a single file. So, saving to .ten on a per chart basis is not a solution that is applicable for my case.

Thanks,

Re: Serialization of FastLine Series

Posted: Wed Sep 16, 2009 1:56 pm
by narcis
Hi asupriya,

In that case you can use XML data export format supplied and load back series and data from it. You'll find information and examples in tutorial 12. Tutorials are available at TeeChart's program group.