您好,欢迎来到[编程问答]网站首页   源码下载   电子书籍   软件下载   专题
当前位置:首页 >> 编程问答 >> .NET >> c# KernelBasedll异常 多线程 win 2008

c# KernelBasedll异常 多线程 win 2008

来源:网络整理     时间:2016/5/13 0:26:56     关键词:kernel,based

关于网友提出的“c# KernelBasedll异常 多线程 win 2008”问题疑问,本网通过在网上对“c# KernelBasedll异常 多线程 win 2008”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:

问题:c# KernelBasedll异常 多线程 win 2008
描述:


  多线程  数据传输 在自己电脑上可以正常运行(win 7 32位),但在客户服务器上运行就报错了(win sever 2008 64位 内存16G)
c#   KernelBasedll异常  多线程   win 2008
附上代码:
Thread[] threads = new Thread[12];
            for (int i = 0; i < 12; i++)
            {
                threads[i] =
                  new Thread(new ParameterizedThreadStart(UPFH));
            }
            for (int i = 0; i < 12; i++)
            {
                Thread t = threads[i];
                t.Start(i);
            }
=============================================================================
public void UPFH(object obj)
        {
            int mm = 0;//分
            int ss = 0;//秒
            if (Convert.ToInt16(obj.ToString()) >= 6)
            {
                ss = 1;
                mm = Convert.ToInt16(obj.ToString()) - 6;
            }
            else
            {
                ss = 0;
                mm = Convert.ToInt16(obj.ToString());
            }
             
            //lock (threadLock)
            {
               
                InvokePro mDelegate = new InvokePro(InsertListView);
                try
                {
                    DateTime CurrentTime = DateTime.Now;
                    string DATE = CurrentTime.ToString("yyyyMMdd");
                    string TIME = CurrentTime.ToString("HHmmss");
                    Int32 NumPos = 0;
                    Socket serverSocket;
                    serverSocket = new Socket(AddressFamily.InterNetwork,
                                              SocketType.Stream,
                                              ProtocolType.Tcp);
                    string SendLX = string.Empty;
                    string SendMsg = string.Empty;
                    string AceeMsg = string.Empty;
                    string SendTotal = string.Empty;
                    //int count;
                    Int32 qcount;
                    CS = new CSocket(serverSocket);
                    string sql = "select lsh, swaprec  from t_collalldatatemp t where state='0' and (mod(to_number(substr(rq,13,2)), 2) ='" + ss + "') and substr(rq,11,1)='" + mm + "'";
                   // string sql = "select lsh, swaprec  from t_colldatabaktemp t where state='0' and uprq='"+obj.ToString()+"'";
                    DataTable DtPos = OracleHelper.ExecuteDataTable(OracleHelper.ConnectionString, sql);
                    NumPos = Convert.ToInt32(DtPos.Rows.Count);
                    if (NumPos > 0)
                    {
                        lvResult.Invoke(mDelegate, new object[] { "客户端", obj.ToString() + " " + Thread.CurrentThread.ManagedThreadId, "开始上传消费数据... " });
                        if (CS.Open(serverIp, Convert.ToInt16(port)) == "0")
                        {
                            qcount = 0;
                            for (Int32 iSWAPREC = 0; iSWAPREC < NumPos; iSWAPREC++)
                            {
                                CS.AcceptStr = null;
                                SendTotal = string.Empty;
                                SendLX = "8030";
                                SendMsg = "00000003" + GetXzDataSocket(DtPos.Rows[iSWAPREC]["swaprec"].ToString());
                                byte[] textBuffer = System.Text.Encoding.Default.GetBytes(SendMsg);
                                SendTotal = SendLX + SendMsg + CRC16(textBuffer);
                                lock (threadLock)
                                {
                                    CS.Send(SendTotal);
                                    //count = 0;
                                    while (true)
                                    {
                                        Thread.Sleep(100);
                                        AceeMsg = CS.AcceptStr;
                                        if (AceeMsg != null)
                                        {
                                            if (AceeMsg.Substring(0, 6) == "808000")
                                            {
                                                qcount++;
                                                sql = "update t_collalldatatemp set state='1' where lsh='" + DtPos.Rows[iSWAPREC]["lsh"].ToString() + "' ";
                                                OracleHelper.InsertDataSet(sql);
                                                this.Invoke((Action)delegate
                                                {
                                                    //this.Text = obj.ToString() + "  " + Convert.ToInt32(iSWAPREC).ToString();
                                                    this.Text = mm+"  "+ss + "  " + Convert.ToInt32(iSWAPREC).ToString();
                                                });
                                                break;
                                            }
                                        }
                                        break;
                                    }
                                }
                            }
                            sql = "Insert into t_colldatabak Select * From t_collalldatatemp where state='1'";
                            OracleHelper.InsertDataSet(sql);
                            sql = "DELETE From t_collalldatatemp where state='1'";
                            OracleHelper.InsertDataSet(sql);
                            CS.Cancel();
                            lvResult.Invoke(mDelegate, new object[] { "客户端", obj.ToString()+" "+Thread.CurrentThread.ManagedThreadId, " 上传数: " + Convert.ToInt32(NumPos).ToString()});
                            //lvResult.Items.Insert(0, AddListViewItem("客户端", txtJMJIPAddress.Text + ":" + txtJMJPort.Text, " 上传数: " + Convert.ToInt32(NumPos).ToString() + "  确认数: " + Convert.ToInt32(qcount).ToString()));
                        }
                    }
                }
                catch (Exception err)
                {
                    lvResult.Items.Insert(0, AddListViewItem("客户端", "error", err.Message));
                }
            }
        }


解决方案1:

引用 3 楼 kopnature 的回复:
Quote: 引用 2 楼 duanzi_peng 的回复:

err.Message  没信息么? 贴这么多代码 没人会去测试的。   是环境或者缺少某些文件 导致的

没让测试,看看有没有问题,没有其他信息了

在你电脑上可以,其它都不行  那就只能说是运行环境的问题了。 解决方案2:

err.Message  没信息么? 贴这么多代码 没人会去测试的。   是环境或者缺少某些文件 导致的


以上介绍了“c# KernelBasedll异常 多线程 win 2008”的问题解答,希望对有需要的网友有所帮助。
本文网址链接:http://www.codes51.com/itwd/1039008.html

相关图片

相关文章