Click here to Skip to main content
15,881,882 members
Home / Discussions / C#
   

C#

 
QuestionHow to copy DataTable contents into SQLite table? Pin
Alex Dunlop26-Jul-21 20:37
Alex Dunlop26-Jul-21 20:37 
AnswerRe: How to copy DataTable contents into SQLite table? Pin
OriginalGriff26-Jul-21 21:06
mveOriginalGriff26-Jul-21 21:06 
GeneralRe: How to copy DataTable contents into SQLite table? Pin
Alex Dunlop26-Jul-21 21:16
Alex Dunlop26-Jul-21 21:16 
GeneralRe: How to copy DataTable contents into SQLite table? Pin
Alex Dunlop26-Jul-21 22:58
Alex Dunlop26-Jul-21 22:58 
GeneralRe: How to copy DataTable contents into SQLite table? Pin
OriginalGriff26-Jul-21 23:09
mveOriginalGriff26-Jul-21 23:09 
GeneralRe: How to copy DataTable contents into SQLite table? Pin
Alex Dunlop27-Jul-21 0:39
Alex Dunlop27-Jul-21 0:39 
AnswerRe: How to copy DataTable contents into SQLite table? Pin
Richard Andrew x6428-Jul-21 2:36
professionalRichard Andrew x6428-Jul-21 2:36 
QuestionRTD communication error (COM) / .ConnectData(Int32 topicId, Object[]& parameters, Boolean& newValue) Pin
Juliano Zucatti26-Jul-21 10:14
Juliano Zucatti26-Jul-21 10:14 
I created a client to communicate with RTD server, my knowledge is small in C# I have greater in JAVA, but I didn't find anything likely to be used in JAVA, I'm using this example of a C# client


C#
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Diagnostics;
using System.Threading;
using System.Runtime.InteropServices;
using System.Runtime.CompilerServices;
namespace DotNet2
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Hello World!");

            chamaMetodo("RTDTrading.RTDServer");
        }

        private static void chamaMetodo(string v)
        {
                       
            RtdClient rtd = new RtdClient(v);
            Console.WriteLine("rtd:"+rtd);
            
            object[] param = new Object[2];
            param[0] = "DOLFUT_F_0";
            param[1] = "HOR";
            Object ret = rtd.GetValue(param);
            Console.WriteLine("ret:"+ret);
        }
    }

}


Class Interface que monta a comunicação:


C#
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Diagnostics;
using System.Threading;
using System.Runtime.InteropServices;
using System.Runtime.CompilerServices;

namespace DotNet2
{
    public interface IRtdClient
    {
        object GetValue(params object[] args);
    }

    public class RtdClient : IRtdClient
    {
        readonly string _rtdProgId;
        static IRtdServer _rtdServer;
        

        public RtdClient(string rtdProgId)
        {
            _rtdProgId = rtdProgId;
        }

        public object GetValue(params object[] args)
        {
            
            const int topicCount = 1;
            var rnd = new Random();
            var topicId = rnd.Next(int.MaxValue);
            var rtdServer = GetRtdServer();
            Console.WriteLine("TopicID "+topicId+" args:"+args[0]+" args2:"+args[1]);
            
            rtdServer.ConnectData(topicId, args, true);

            object val = null;
            while (val == null)
            {
                var alive = rtdServer.Heartbeat();
                
                if (alive != 1)
                    GetRtdServer();
                else
                {
                    //var refresh = new object[0,0];
                    var refresh = rtdServer.RefreshData(topicCount);
                    if (refresh.Length <= 0) continue;

                    if (refresh[0, 0].ToString() == topicId.ToString())
                    {
                        val = refresh[1, 0];
                    }
                }
            }

            rtdServer.DisconnectData(topicId);

            return val;
        }

        IRtdServer GetRtdServer()
        {
            if (_rtdServer == null)
            {
                Type rtd = Type.GetTypeFromProgID(_rtdProgId);
                _rtdServer = (IRtdServer)Activator.CreateInstance(rtd);
            }
            return _rtdServer;
        }
    }

    [ComImport,
        TypeLibType((short)0x1040),
        Guid("EC0E6191-DB51-11D3-8F3E-00C04F3651B8")]
    public interface IRtdServer
    {
        [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(10)]
        int ServerStart([In, MarshalAs(UnmanagedType.Interface)] IRTDUpdateEvent callback);

        [return: MarshalAs(UnmanagedType.Struct)]
        [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(11)]
        object ConnectData([In] int topicId, [In, MarshalAs(UnmanagedType.SafeArray,
                                                SafeArraySubType = VarEnum.VT_VARIANT)] ref object[] parameters, [In, Out] ref bool newValue);

        [return: MarshalAs(UnmanagedType.SafeArray, SafeArraySubType = VarEnum.VT_VARIANT)]
        [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(12)]
        object[,] RefreshData([In, Out] ref int topicCount);

        [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(13)]
        void DisconnectData([In] int topicId);

        [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(14)]
        int Heartbeat();

        [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(15)]
        void ServerTerminate();
    }

    [ComImport,
        TypeLibType((short)0x1040),
        Guid("A43788C1-D91B-11D3-8F39-00C04F3651B8")]
    public interface IRTDUpdateEvent
    {
        [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(10),
            PreserveSig]
        void UpdateNotify();

        [DispId(11)]
        int HeartbeatInterval
        {
            [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(11)]
            get; [param: In]
            [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(11)]
            set;
        }

        [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(12)]
        void Disconnect();
    }

}


But I'm getting this error, in the method call:rtdServer.ConnectData(topicId, args, true);

C#
Unhandled exception. System.Runtime.InteropServices.COMException (0x8000FFFF): Falha catastrófica (0x8000FFFF (E_UNEXPECTED))
at DotNet2.IRtdServer.ConnectData(Int32 topicId, Object[]& parameters, Boolean& newValue)



Is anyone aware of the error?


modified 26-Jul-21 18:00pm.

QuestionHow to shuffle an array VS Windows Form Application? Pin
Sofi081326-Jul-21 0:26
Sofi081326-Jul-21 0:26 
AnswerRe: How to shuffle an array VS Windows Form Application? Pin
OriginalGriff26-Jul-21 0:40
mveOriginalGriff26-Jul-21 0:40 
GeneralRe: How to shuffle an array VS Windows Form Application? Pin
Sofi081326-Jul-21 1:22
Sofi081326-Jul-21 1:22 
AnswerRe: How to shuffle an array VS Windows Form Application? Pin
Richard MacCutchan26-Jul-21 0:42
mveRichard MacCutchan26-Jul-21 0:42 
QuestionHow to find average value for duplicate keys in Dictionary? Pin
Alex Dunlop24-Jul-21 4:29
Alex Dunlop24-Jul-21 4:29 
AnswerRe: How to find average value for duplicate keys in Dictionary? Pin
Alex Dunlop24-Jul-21 6:29
Alex Dunlop24-Jul-21 6:29 
GeneralRe: How to find average value for duplicate keys in Dictionary? Pin
Gerry Schmitz24-Jul-21 6:44
mveGerry Schmitz24-Jul-21 6:44 
AnswerRe: How to find average value for duplicate keys in Dictionary? Pin
OriginalGriff24-Jul-21 6:47
mveOriginalGriff24-Jul-21 6:47 
AnswerRe: How to find average value for duplicate keys in Dictionary? Pin
BillWoodruff28-Jul-21 3:11
professionalBillWoodruff28-Jul-21 3:11 
QuestionEfficient method to build a CSV string Pin
Vikas Mishra Jul202123-Jul-21 10:46
Vikas Mishra Jul202123-Jul-21 10:46 
AnswerRe: Efficient method to build a CSV string Pin
Dave Kreskowiak23-Jul-21 11:59
mveDave Kreskowiak23-Jul-21 11:59 
AnswerRe: Efficient method to build a CSV string Pin
Richard Andrew x6423-Jul-21 12:18
professionalRichard Andrew x6423-Jul-21 12:18 
AnswerRe: Efficient method to build a CSV string Pin
Gerry Schmitz24-Jul-21 6:20
mveGerry Schmitz24-Jul-21 6:20 
QuestionHow to get double value in string format? Pin
Alex Dunlop23-Jul-21 7:48
Alex Dunlop23-Jul-21 7:48 
AnswerRe: How to get double value in string format? Pin
OriginalGriff23-Jul-21 8:12
mveOriginalGriff23-Jul-21 8:12 
GeneralRe: How to get double value in string format? Pin
Alex Dunlop29-Jul-21 6:20
Alex Dunlop29-Jul-21 6:20 
GeneralRe: How to get double value in string format? Pin
OriginalGriff29-Jul-21 6:32
mveOriginalGriff29-Jul-21 6:32 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.