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"])
}
});
}
}
}
}
내가 성공적으로 직접 실행 창에서 개체를 인스턴스화 할 수 있습니다,하지만 난 그 인스턴스에서, 그 부하() 메서드를 호출 할 때, 내가 얻을 :
첫 번째에게 다음 코드 블록이다 mscorlib.dll에서 'System.Threading.ThreadAbortException'유형의 예외 예외가 발생했습니다.
평가하려면 스레드를 일시적으로 실행해야합니다. 조사 식 창을 사용하여 평가를 수행하십시오.
옵션 -> 디버그 -> 속성 평가 및 다른 암시 적 함수 호출 사용을 해제했습니다.
나를 혼란스럽게 만들었습니다 ... 아주 간단하게 보입니다. 나는 완전히 지나칠 수 없습니다.
직접 실행 창에서이 작업을 수행하려는 이유를 알 수 있습니까? – CodingYoshi
오류를 해결하려고하십니까? 또는 JSON 내용이 제대로로드되고 있는지 확인 하시겠습니까? –
즉각적인 창에서 실행하고자하는 이유는 코드가 한 번 사용되기 때문입니다. 즉, 새 데이터베이스를 설정할 때 일부 작업을 초기화하는 데에만 사용됩니다. 그래서 나는 다른 어느 곳에서도 그것을 부를 수있는 시설을 갖추고 있지 않다. 내 말은, 나는 콘솔 앱을 설치할 수 있다는 뜻이다. 그것을 목표로 삼는 것, 나는 생각한다. 그러나 그것을 피하려고 노력하고 있었다. 그리고 그것을 테스트 할 때 나는 그것을 많이 실행해야하기 때문에 직접적인 창에서 그렇게하는 것이 가장 쉽습니다. –