我正试图在Visual Studio立即窗口中运行一些相当简单的代码。所有的代码都是从文件中读取一些JSON输入,并使用它来调用其他一些方法,以便使用值加载数据库。下面的代码块:在即时窗口中调用C#方法VS,获取'System.Threading.ThreadAbortException'
using Newtonsoft.Json.Linq;
using System;
using System.IO;
namespace POST.API
{
public class Initialization
{
public const string JSON_DATA_FILE = "C:\\OHA_SDD_POST_Development\\POST\\POST.API\\Services\\Setup\\InitializationData.json";
public const string JSON_OBJKEY_DOMAIN = "Domain";
public const string JSON_OBJKEY_ACCOUNTDOMAINTYPE = "AccountDomainType";
public const string JSON_OBJKEY_ORGLOCTYPE = "OrganizationLocationType";
public JObject POSTDataInitJObject;
public JArray Domains;
public JArray AccountDomainRoles;
public JArray OrganizationLocationTypes;
public API.Services.Domain SvcDomain;
public API.Services.Organization SvcOrganization;
public API.Services.Location SvcLocation;
/// <summary>
///
/// </summary>
/// <param name="JsonDataFile"></param>
public Initialization(string JsonDataFile = JSON_DATA_FILE)
{
string JsonData = File.ReadAllText(JsonDataFile);
POSTDataInitJObject = JObject.Parse(JsonData);
Domains = (JArray)POSTDataInitJObject[JSON_OBJKEY_DOMAIN];
AccountDomainRoles = (JArray)POSTDataInitJObject[JSON_OBJKEY_ACCOUNTDOMAINTYPE];
OrganizationLocationTypes = (JArray)POSTDataInitJObject[JSON_OBJKEY_ORGLOCTYPE];
}
/// <summary>
///
/// </summary>
public void Load()
{
LoadDomains();
LoadOrganizationLocationTypes();
}
/// <summary>
///
/// </summary>
/// <param name="Replace"></param>
public void LoadDomains(bool Replace = true)
{
SvcDomain = new API.Services.Domain();
if (Replace)
{
SvcDomain.ClearAllDomains(true);
}
foreach (var i in Domains)
{
SvcDomain.AddDomain(new API.Models.Domain
{
Code = (string)i["Code"],
Definition = new API.Models.TypeDefinition
{
Name = (string)i["Name"],
Description = (string)i["Description"],
Order = Int32.Parse((string)i["Order"])
}
});
}
}
/// <summary>
///
/// </summary>
/// <param name="Replace"></param>
public void LoadOrganizationLocationTypes(bool Replace = true)
{
SvcLocation = new API.Services.Location();
if (Replace)
{
SvcLocation.ClearAllOrganizationLocationTypes();
}
foreach (var i in OrganizationLocationTypes)
{
SvcLocation.AddOrganizationLocationType(new API.Models.OrganizationLocationType
{
Definition = new API.Models.TypeDefinition
{
Name = (string)i["Name"],
Description = (string)i["Description"],
Order = Int32.Parse((string)i["Order"])
}
});
}
}
}
}
我可以成功实例化对象在立即窗口,但是当我再尝试调用Load()方法,在该情况下,我得到:
第一mscorlib.dll中发生类型'System.Threading.ThreadAbortException'的机会异常
评估需要一个线程临时运行。使用观察窗口来执行评估。
我关闭了选项 - >调试 - >启用属性评估和其他隐式函数调用。
让我难住...看起来超级简单,我完全无法超越它。
我可以知道您为什么要在即时窗口中执行此操作吗? – CodingYoshi
您是否在尝试解决错误?或者确保JSON内容正确加载? –
因此,想要在即时窗口中运行的原因是因为代码是一次性使用的。也就是说,它仅用于在建立新数据库时初始化一些事物。所以我没有设置设置从其他地方调用它。我的意思是,我可以设置一个控制台应用程序。以我的目标为目标,但只是想避免这一点。而在测试时,我需要运行它很多,所以从即时窗口执行操作最简单。 –