gof*_*net 208 c# windows-services
以下是我的Windows服务代码.当我调试代码时,我收到错误/异常:
'CSMessageUtility.CSDetails'的类型初始值设定项引发了异常.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Linq;
using System.ServiceProcess;
using System.Text;
using System.IO;
using System.Threading;
using System.Windows;
using System.Windows.Forms;
using CSMessageUtility;
namespace CS_Data_Trasmmiting_Service
{
public partial class svcCSWinServ : ServiceBase
{
//private string sLogFormat;
//private string sErrorTime;
private Thread new_thread;
Logger logObject = new Logger();
private bool isenable = true;
public svcCSWinServ()
{
InitializeComponent();
logObject.append("Initialize Service " + DateTime.Now.ToString(), 70);
CheckForAlarms();
}
protected override void OnStart(string[] args)
{
try
{
new_thread = new Thread(new ThreadStart(CheckForAlarms));
new_thread.Start();
}
catch
{
}
logObject.append("Service Started successfully " + DateTime.Now.ToString(), 70);
}
protected override void OnStop()
{
try
{
isenable = false;
new_thread.Abort();
}
catch
{
}
logObject.append("Service Stopped successfully " + DateTime.Now.ToString(), 70);
}
void CheckForAlarms()
{
try
{
while (true)
{
//if((DateTime.Now.ToString("HH:mm") == "18:00"))
//{
logObject.append("Start Sending Data " +DateTime.Now.ToString(), 70);
try
{
//SendAllInfo();
string str = CSMessageUtility.CSDetails.createDHSMessageFormat();
Thread.Sleep(2000);
string str1 = CSMessageUtility.CSDetails.createEALMessageFormat();
Thread.Sleep(2000);
string str2 = CSMessageUtility.CSDetails.createProductStatusMessageForamt();
Thread.Sleep(2000);
string str3 = CSMessageUtility.CSDetails.createEODMessageFormat();
Thread.Sleep(2000);
string str4 = CSDetails.createProductReceiptEntryatBOSMessageFormat();
Thread.Sleep(2000);
string str5 = CSMessageUtility.CSDetails.createProductSaleMessageFormat();
Thread.Sleep(2000);
string str6 = CSMessageUtility.CSDetails.createTotalizerExceptionMessageFormat();
Thread.Sleep(2000);
//CSMessageUtility.CSDetails.createDailyCOtransferMessageFormat();
//Thread.Sleep(2000);
}
catch (Exception ee)
{
logObject.append(ee.Message, 70);
}
logObject.append("Finished Sending Data " +DateTime.Now.ToString(), 70);
Thread.Sleep(3000);
//}
//Thread.Sleep(20000);
}
}
catch (Exception ex)
{
logObject.append("Thread Exception: "+ ex.Message + " "+ DateTime.Now.ToString(), 70);
try
{
new_thread.Abort();
}
catch (Exception ex1)
{
logObject.append("Thread Exception: " +ex1.Message + " " + DateTime.Now.ToString(), 70);
}
if (isenable == true)
{
new_thread = new Thread(new ThreadStart(CheckForAlarms));
new_thread.Start();
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
Fre*_*örk 332
检查InnerException
属性TypeInitializationException
; 它可能包含有关潜在问题的信息,以及它发生的确切位置.
Muh*_*bal 178
如果类试图获取web.config或app.config中不存在的键的值,则可能导致此问题.
例如
,该类有一个静态变量
private static string ClientID = System.Configuration.ConfigurationSettings.AppSettings["GoogleCalendarApplicationClientID"].ToString();
Run Code Online (Sandbox Code Playgroud)
但是web.config不包含GoogleCalendarApplicationClientID
密钥
任何静态函数调用或任何类实例创建都将抛出该错误
Jac*_*ope 55
The type initializer for 'CSMessageUtility.CSDetails' threw an exception.
表示该类上的静态构造函数抛出异常 - 因此您需要查看CSDetails类的静态构造函数,或者查找该类的任何静态成员的初始化.
我遇到了同样的问题,当我在Util类中使用静态方法时,就像你使用'CSMessageUtility.CSDetails'一样.
问题是在类的静态初始化期间(使用静态构造函数),框架还初始化类中的静态变量(字段).我有一个静态变量尝试从app.config读取值,app.config缺少相应的设置,因此导致未处理的异常.这导致"对象引用未设置为对象的实例".作为内在的例外.