C\#간단 한 성적 관리 시스템 의 전체 절 차 를 실현 합 니 다.
이번 주 에 C\#와 일주일 동안 접촉 했다.(이번 주 는 학교 에서 배정 한 실험 주간 이 고 C\#원 하 는 절차 와 기능 을 실현 하 는 데 사용 되 었 다)
모두 일곱 개의 실험 이 있 습 니 다.세 개 를 선택 하면 제 가 가장 많이 진보 한 하 나 를 선택 하여 분석 하 겠 습 니 다.
효과.
일단 효 과 를 볼 게 요.
txt 텍스트 에서 데 이 터 를 읽 고 보 여 줍 니 다.
대상 을 클릭 한 후 선택 하고"수정"을 클릭 하여 수정 화면 을 팝 업 한 후 편집 하면 됩 니 다.
"통계"단 추 를 누 르 면 팝 업 창 에 각 점수 구간 의 정 보 를 표시 합 니 다.
"조회"를 클릭 하면 화면 이 팝 업 됩 니 다.입력 후"확인"을 클릭 하면 정 보 를 표시 할 수 있 습 니 다.
이루어지다
준비 작업
방법 을 쓰기 전에 먼저 인터페이스 를 계획 하 는 것 은 단추 와 입력 상자 나 디 스 플레이 상 자 를 추가 하여 요구 에 부 합 된 창 이나 여러 창 을 구성 하 는 것 입 니 다.
이 프로그램 에서 우리 가 사용 하 는 것 은 주로 이 몇 개의 구성 요소 이다.
파일 을 조작 할 때 인용 할 성명,즉"using"
저희 가 이 두 줄 을 추 가 했 어 요.
그리고 우 리 는 코드 를 써 서 다른 기능 을 실현 해 야 한다.
public Form1()
{
InitializeComponent();
this.listView1.Columns.Add(" ", 100, HorizontalAlignment.Center);
this.listView1.Columns.Add(" ", 100, HorizontalAlignment.Center);
this.listView1.Columns.Add(" ", 100, HorizontalAlignment.Center);
this.listView1.Columns.Add(" ", 100, HorizontalAlignment.Center);
this.listView1.Columns.Add(" ", 100, HorizontalAlignment.Center);
this.listView1.Columns.Add(" ", 100, HorizontalAlignment.Center);
this.listView1.Columns.Add(" ", 100, HorizontalAlignment.Center);
this.listView1.Columns.Add(" ", 100, HorizontalAlignment.Center);
this.listView1.View = System.Windows.Forms.View.Details;
this.listView1.FullRowSelect = true;//
}
"listview 1"은 단추 위 에 표 시 된 컨트롤 입 니 다."this"는 Form 1 이라는 창 을 말 합 니 다."Columns"는"표시 줄",즉 위의 내용 을 말 합 니 다."add"는 뒤의 내용 을"Columns"의 내용 으로 말 합 니 다.뒤의"100"등 은"Columns"의 속성 으로 속성 을 수정 하여 크기 와 위 치 를 수정 할 수 있 습 니 다.또 하나의'Column'을 만 드 는 방법 은 속성 표시 줄 을 통 해 추가 하 는 것 이다.listview 를 한 번 클릭 하여 선택 한 다음 오른쪽 단 추 를 한 번 클릭 하고 속성 을 클릭 하면'Column'이라는 속성 이 있 습 니 다.클릭 하면 편집 과 수정 이 가능 합 니 다.
확실히 편리 하 다 고 말 할 수 밖 에 없 지만 실험 보고서 수첩 에 필요 한 소스 코드 를 주 었 고 C\#를 처음 접 했 기 때문에 뒤의 방법 을 사용 하지 않 았 지만 뒤의 조작 에서 사용 해 보 니 시원 하 다.
읽 기 동작
여기 서'읽 기'단 추 는 통계 후의 내용 을 읽 습 니 다.성적 등 정보 가 아 닙 니 다.'읽 기'단 추 를 두 번 누 르 면 편집 할 수 있 습 니 다.(단추 의 속성 에서 name 속성 을 load 로 수 정 했 기 때문에 이 방법 은'load'입 니 다.Click”)
private void load_Click(object sender, EventArgs e)
{
this.load_data();
}
여기 서"load"를 호출 하 였 습 니 다.data()"이 방법
public void load_data()
{ string file = File.ReadAllText("Score.txt", UTF8Encoding.Default);
// txt regex.Split string
string[] records = Regex.Split(file, "\r
");
//
this.listView1.BeginUpdate();
//
this.listView1.Items.Clear();
// records.Length
for (int index = 0; index < records.Length; index++)
{ //
string[] components = Regex.Split(records[index], " ");
// listview
ListViewItem lvi = new ListViewItem(components);
//
lvi.SubItems[0].BackColor = Color.Red;
// listview
this.listView1.Items.Add(lvi);
}
//
this.listView1.EndUpdate();
}
이 방법 은'/r/n'을 분계선 으로 배열 1 을 정의 한 다음 빈 칸 을 분계선 으로 배열 2 를 정의 하 는 동시에 ListView Item 을 생 성하 여 배열 2 를 표시 한 다음 배경 색 을 설정 하 는 것 입 니 다.여 기 는 빨간색 으로 설정 되 어 있 습 니 다.
// listview
ListViewItem lvi = new ListViewItem(components);
//
lvi.SubItems[0].BackColor = Color.Red;
lvi 는 새로 생 성 된 listview 의 이름 입 니 다.3.조회 조작
private void Search_Click(object sender, EventArgs e)
{
Form3 f3 = new Form3();
f3.Show();
}
검색 방법 에서 우 리 는 하나의 창 Form 3 를 호출 했 습 니 다.Form 1 과 마찬가지 로 먼저 창의 구 조 를 계획 한 다음 에 방법 을 썼 습 니 다.
private void go_Click(object sender, EventArgs e)
{
string file = File.ReadAllText("Score.txt", UTF8Encoding.Default);
// txt regex.Split string
string[] records = Regex.Split(file, "\r
");
//
this.listView1.BeginUpdate();
//
this.listView1.Items.Clear();
// records.Length
for (int index = 0; index < records.Length; index++)
{
//
string[] components = Regex.Split(records[index], " ");
Regex r = new Regex(this.textBox1.Text); // Regex
Match m = r.Match(components[0]); //
if (m.Success)
{
// listview
ListViewItem lvi = new ListViewItem(components);
//
lvi.SubItems[0].BackColor = Color.White;
// listview
this.listView1.Items.Add(lvi);
}
else if (components.Length > 1)
{
Match n = r.Match(components[1]);
if (n.Success)
{
// listview
ListViewItem lvi = new ListViewItem(components);
//
lvi.SubItems[0].BackColor = Color.White;
// listview
this.listView1.Items.Add(lvi);
}
}
}
//
this.listView1.EndUpdate();
}
주요 한 방법,심지어 유일한 방법,바로 위의"go"입 니 다.Click()방법,"Score.txt"는 성적 등 정 보 를 저장 합 니 다.이름과 학 번 이 일치 합 니 다.새로 만 든 listview 의 item 전시 정보 와 일치 합 니 다.이곳 의 조 회 는 일치 하 는 함 수 를 사 용 했 습 니 다Match()공식 링크 를 드 립 니 다.
Match()
삭제
삭 제 된 사상 은 삭 제 될 줄 을 선택 한 다음 파일 에서 모든 내용 을 읽 는 것 입 니 다.새 string 배열 은 각 줄,한 줄 한 줄 을 옮 겨 다 니 며 선택 한 줄 을 만 날 때 까지 배열 에서 삭제 한 다음 나머지 배열 요 소 를 텍스트 에 기록 합 니 다.Write AllLines()방법 정의 에서 replace()방법 을 사용 합 니 다.그래서 파일 의 원래 내용 을 삭제 하 는 작업 을 줄 였 습 니 다.
private void Delate_Click(object sender, EventArgs e)//
{
foreach (ListViewItem lvi in listView1.SelectedItems)
{
// txt file , string file
string file = File.ReadAllText("Score.txt", UTF8Encoding.Default);
List<string> lines = new List<string>(Regex.Split(file, "\r
"));
lines.RemoveAt(lvi.Index);
File.WriteAllLines("Score.txt", lines.ToArray(), UTF8Encoding.Default);
}
this.load_data();
}
입력
private void Input_Click(object sender, EventArgs e)//
{
Form2 f = new Form2(this);
f.Show();
}
이 곳 의 입력 방법 은 새로운 창 Form 2 를 호출 했 습 니 다.이전 과 달리 Form 2 에 인자'this',즉 Form 1 이라는 창 을 전 달 했 습 니 다.그 후에 우 리 는 Form 2 방법 에서 Form 1 을 호출 해 야 하기 때 문 입 니 다.Form 2 의 인터페이스 와 방법 을 살 펴 보 겠 습 니 다.
1.수신 매개 변수
private Form1 form;
public Form2()
{
InitializeComponent();
}
public Form2(Form1 form){
this.form = form;
InitializeComponent();
}
먼저 정 의 를 내 린 다음 에 값 을 부여 하면 나중에 정의 할 때 사용 하 는 이름 으로 Form 1 방법 을 호출 할 수 있 습 니 다.2.정보 저장
"저장"단 추 를 누 른 후에 우 리 는 텍스트 의 기록 과 인터페이스의 업 데 이 트 를 실현 해 야 합 니 다.텍스트 의 기록 은 새로운 방법 을 써 야 합 니 다.인터페이스의 업 데 이 트 는 Form 1 방법 을 사용 할 수 있 습 니 다.
if (this.textBox1.Text != string.Empty && this.textBox2.Text != string.Empty && this.textBox3.Text != string.Empty && this.textBox4.Text != string.Empty && this.textBox5.Text != string.Empty)
{
// string , , txt
string newrecord = this.textBox1.Text + " " + this.textBox2.Text + " " + this.textBox3.Text + " " + this.textBox4.Text + " " + this.textBox5.Text + "\r
" ;
File.AppendAllText("Score.txt", newrecord, UTF8Encoding.Default);
// form2
this.Dispose(false);
// Form1
this.form.load_data();
}
else
{
Form5 f5 = new Form5();
f5.Show();
}
우선 비어 있 지 않 으 면 새 문자열,할당,텍스트 를 정의 합 니 다.프로그램의 엄밀 성 을 확보 하기 위해 Form 5 창 을 추가 하여 잘못된 알림 을 합 니 다.(시간의 제한 으로 인해 이곳 도 완선 한 편 은 아니다.능력 있 는 사람 은 각 조건 의 판단 을 고려 할 수 있다.예 를 들 어'학 번'이 비어 있 으 면 팝 업 창 에'학 번 이 비어 있 으 면 안 된다'고 표시 한다)
주의해 야 할 것 은 여기 서 호출 된 Form 1 의 방법 은 반드시 공유 되 어야 한 다 는 것 이다.즉,'Public'이다.
연산
private void operate_Click(object sender, EventArgs e)
{
// txt file , string file
string file = File.ReadAllText("Score.txt", UTF8Encoding.Default);
// txt regex.Split string
string[] records = Regex.Split(file, "\r
");
//
this.listView1.BeginUpdate();
//
this.listView1.Items.Clear();
System.IO.File.WriteAllText("Score.txt", string.Empty);
double[] score1 = new double[records.Length];
double[] score2 = new double[records.Length];
int num = 0;
// records.Length
for (int index = 0; index < records.Length; index++)
{
if (records[index].Length != 0)
{
//
string[] components = Regex.Split(records[index], " ");
score1[index] = Convert.ToDouble(components[2]) + Convert.ToDouble(components[3]) + Convert.ToDouble(components[4]);
score2[index] = (Convert.ToDouble(components[2]) + Convert.ToDouble(components[3]) + Convert.ToDouble(components[4])) / 3.0;
num++;
}
else
break;
}
//
int temp;
for (int i = 0; i < num; i++)
{
temp = i;
for (int j = i + 1; j < num; j++)
{
if (score1[j] > score1[temp])
temp = j;
}
double t = score1[temp];
score1[temp] = score1[i];
score1[i] = t;
}
for (int index = 0; index < records.Length; index++)
{
if (records[index].Length != 0)
{
//
string[] components = Regex.Split(records[index], " ");
for (int i = 1; i <= num; i++)
{
if (score1[i - 1] == Convert.ToDouble(components[2]) + Convert.ToDouble(components[3]) + Convert.ToDouble(components[4]))
{
// string , , txt
string newrecord = components[0] + " " + components[1] + " " + components[2] + " " + components[3] + " " + components[4] + " " + score1[i - 1] + " " + score2[index] + " " + i + "\r
";
File.AppendAllText("Score.txt", newrecord, UTF8Encoding.Default);
}
}
}
else
break;
}
//
this.listView1.EndUpdate();
//
this.load_data();
}
제목 의 요 구 는 각 학생 의 총 점,평균 점 과 순 위 를 계산 하 는 것 이다.사상 은 먼저 파일 을 읽 고 데 이 터 를 저장 하 며 파일 을 비우 고 총 성적 과 평균 성적 두 배열 을 정의 하 며 각자 의 총 성적 과 평균 성적 을 계산 한 다음 에 거품 법 으로 전체 성적 을 정렬 하여 순 위 를 얻 은 다음 에 새로운 배열 을 구성 하여 이런 내용 을 연결 하 는 것 이다.배열 을 텍스트 에 기록 하고 보 기 를 업데이트 하면 됩 니 다.수정
수 정 된 사상 은 매우 간단 합 니 다.원 하 는 기능 을 실현 했다 고 하지만 결함 도 있 습 니 다.특별히 좋 은 해결 방법 을 생각 하지 못 했 습 니 다.먼저 생각 을 말 해 보 세 요.먼저 선택 한 다음 에'수정',팝 업 창 을 클릭 합 니 다.여기 서 특히 주의해 야 할 것 은 팝 업 창 에 해당 하 는 위치 에 선택 한 내용 을 표시 해 야 한 다 는 것 입 니 다.
이 그림 에서 제 가 선택 한 것 은 두 번 째 줄 입 니 다.그러면 저 는 해당 하 는 데 이 터 를 보 여 드 리 겠 습 니 다.실험 과정 에서 많은 사람들 이 새로운 데 이 터 를 입력 하 는 것 입 니 다.그 안의 모든 내용 을 다시 써 야 합 니 다.이런 시스템 은 자신 이 지정 하 는 것 이 어렵 습 니 다.
(말 나 온 김 에 저 는 한 가지 일 을 삽입 하고 싶 습 니 다.최근 에 사용 한 2 과 시스템 을 말씀 드 리 겠 습 니 다.이것 은 위 챗 애플 릿 입 니 다.이것 은 학교의 한 팀 이 개발 한 것 입 니 다.전체적으로 괜 찮 습 니 다.가장 큰 부족 한 것 은 열 때마다 로그 인 해 야 한 다 는 것 입 니 다.즉,사용 할 때마다 계 정과 비밀 번 호 를 다시 입력 해 야 합 니 다.사용자 의 체험 이 정말 좋 지 않 습 니 다.그러나 부족 하 다 고 해서 부인 할 수 는 없다.전체적으로 도 편리 하고 배 울 만하 다)
예전 에 프로젝트 의 개발 에 참여 한 적 이 있 고 프로젝트 의 시청자 가 바로 우리 자신 이 며 어떤 효과 가 사용 자 를 만족 시 킬 수 있 는 지 알 기 때문에 이 기능 을 수정 하 는 것 에 대해 서도 잘 알 고 있 는 셈 이다.실험 에서 절대 다수의'수정'기능 이 만 족 스 러 운 효 과 를 얻 지 못 했 기 때문에 경험 을 쌓 는 것 은 절대 쓸모 가 없 는 것 이 아니다.
계속 우리 의 기능 실현 으로 돌아 와'확인'을 클릭 한 후에 텍스트 를 기록 합 니 다.그러면 우 리 는 반드시 이전의 데 이 터 를 삭제 하고 인삼 을 전달 한 후에 데 이 터 를 삭제 해 야 합 니 다.물론 이것 도 하 자가 생 겼 습 니 다.사용자 가 데 이 터 를 수정 하지 않 으 면 어떻게 합 니까?먼저 코드 를 보 세 요.보시 면 알 수 있 습 니 다.
private void modify_Click(object sender, EventArgs e)//
{
if (listView1.SelectedItems.Count != 0 )
{
ListViewItem all = this.listView1.SelectedItems[0];
Form6 f6 = new Form6(all,this);
f6.Show();
//
foreach (ListViewItem lvi in listView1.SelectedItems)
{
// txt file , string file
string file = File.ReadAllText("Score.txt", UTF8Encoding.Default);
List<string> lines = new List<string>(Regex.Split(file, "\r
"));
lines.RemoveAt(lvi.Index);
File.WriteAllLines("Score.txt", lines.ToArray(), UTF8Encoding.Default);
}
}
else
{
Form4 f4 = new Form4();
f4.Show();
}
}
선택 한 내용 이 비어 있 지 않 으 면 ListView Item 형식의 배열 에 데 이 터 를 저장 한 다음 Form 6(데이터 창 을 수정 하 는 클래스)에 전송 하고 Form 1 같은 종 류 를 전송 하여 사용 할 수 있 도록 한 다음 삭제 방법 을 사용 합 니 다.내용 이 비어 있 으 면 Form 4 를 팝 업 하여 오 류 를 알려 줍 니 다.마찬가지 로 Form 6 쪽 에서 먼저 정의 한 다음 에 매개 변수,할당 을 받 습 니 다.
private void Form6_Load(object sender, EventArgs e)
{
this.textBox1.Text = this.content.SubItems[0].Text;
this.textBox2.Text = this.content.SubItems[1].Text;
this.textBox3.Text = this.content.SubItems[2].Text;
this.textBox4.Text = this.content.SubItems[3].Text;
this.textBox5.Text = this.content.SubItems[4].Text;
}
불 러 오 는 방법 에서 textBox 에 값 을 부여 하여 데 이 터 를 표시 합 니 다.수정 후'확인'을 누 르 면 확인 하 는 방법 은'입력'기능 의'확인'방법 과 같 습 니 다.다시 말 하면 기록 하 는 것 입 니 다.'취소'하면 데 이 터 는 삭 제 됩 니 다.textBox 에 데이터 가 있 으 면 그 데 이 터 를 텍스트 에 다시 기록 합 니 다.이렇게 해서 제 기능 을 실 현 했 지만 데이터 수정 여부 와 상 관 없 이 다시 불 러 오 면 데이터 가 마지막 줄 에 표 시 됩 니 다.방법
private void Determine_Click(object sender, EventArgs e)
{
if (this.textBox1.Text != string.Empty && this.textBox2.Text != string.Empty && this.textBox3.Text != string.Empty && this.textBox4.Text != string.Empty && this.textBox5.Text != string.Empty)
{
// string , , txt
string newrecord = this.textBox1.Text + " " + this.textBox2.Text + " " + this.textBox3.Text + " " + this.textBox4.Text + " " + this.textBox5.Text + "\r
";
File.AppendAllText("Score.txt", newrecord, UTF8Encoding.Default);
var lines = File.ReadAllLines("Score.txt").Where(arg => !string.IsNullOrWhiteSpace(arg));
File.WriteAllLines("Score.txt", lines);
// form6
this.Dispose(false);
}
this.form.load_data();
}
통계통계 란 각 과목 의 각 점수 구간 의 인원 과 각 과목 의 평균 점 수 를 계산 하 는 것 이다.
private void Sta_Click(object sender, EventArgs e)//
{
this.Output();
Form7 f7 = new Form7();
f7.Show();
}
output()방법 을 호출 하여 Form 7 로 데 이 터 를 표시 합 니 다.
public string Output()//
{
string add = string.Empty;
add += " :" + "\r
" + " " + "," + " " + "," + " " + "," + " " + "\r
";
add += "<60" + "," + GetGradeSection(1, 0, 59).ToString() + "," + GetGradeSection(2, 0, 59).ToString() + "," + GetGradeSection(3, 0, 59).ToString() + "\r
";
add += "60~69" + "," + GetGradeSection(1, 60, 69).ToString() + "," + GetGradeSection(2, 60, 69).ToString() + "," + GetGradeSection(3, 60, 69).ToString() + "\r
";
add += "70~79" + "," + GetGradeSection(1, 70, 79).ToString() + "," + GetGradeSection(2, 70, 79).ToString() + "," + GetGradeSection(3, 70, 79).ToString() + "\r
";
add += "80~89" + "," + GetGradeSection(1, 80, 89).ToString() + "," + GetGradeSection(2, 80, 89).ToString() + "," + GetGradeSection(3, 80, 89).ToString() + "\r
";
add += "90~100" + "," + GetGradeSection(1, 90, 100).ToString() + "," + GetGradeSection(2, 90, 100).ToString() + "," + GetGradeSection(3, 90, 100).ToString() + "\r
";
add += " " + "," + GetAve(1).ToString() + "," + GetAve(2).ToString() + "," + GetAve(3).ToString() + "\r
";
System.IO.File.WriteAllText("List.txt", string.Empty);
File.AppendAllText("List.txt", add, UTF8Encoding.Default);
return add;
}
Output 방법 은 GetGradeSection()과 GetAve()두 가지 방법 을 호출 했 습 니 다.문자열 배열 을 만 들 고 정의 한 다음 에 두 가지 방법 으로 되 돌아 온 데 이 터 를 배열 에 연결 한 다음 에 쓰 면 됩 니 다.
public double GetGradeSection(int m ,int low, int high)//
{
int count = 0;
string file = File.ReadAllText("Score.txt", UTF8Encoding.Default);
// txt regex.Split string
string[] records = Regex.Split(file, "\r
");
//
this.listView1.BeginUpdate();
//
this.listView1.Items.Clear();
// records.Length
for (int index = 0; index < records.Length; index++)
{ //
if (records[index].Length != 0)
{
string[] components = Regex.Split(records[index], " ");
if (m == 1)//
{
if (Convert.ToDouble(components[2]) >= low && Convert.ToDouble(components[2]) <= high)
{
count++;
}
}
if (m == 2)//
{
if (Convert.ToDouble(components[3]) >= low && Convert.ToDouble(components[3]) <= high)
{
count++;
}
}
if (m == 3)//
{
if (Convert.ToDouble(components[4]) >= low && Convert.ToDouble(components[4]) <= high)
{
count++;
}
}
}
else break;
}
return count;
}
먼저 순환 한 다음 에 판단 하고 점수 구간 에서 count 값 을 하나 더 하면 마지막 으로 Output()방법 으로 돌아 갑 니 다.
public double GetAve(int m)//
{
double ave = 0;
string file = File.ReadAllText("Score.txt", UTF8Encoding.Default);
// txt regex.Split string
string[] records = Regex.Split(file, "\r
");
int length = records.Length;
//
this.listView1.BeginUpdate();
//
this.listView1.Items.Clear();
// records.Length
for (int index = 0; index < records.Length; index++)
{
if (records[index].Length != 0)
{
//
string[] components = Regex.Split(records[index], " ");
if (m == 1)
{
ave += double.Parse(components[2]);
}
if (m == 2)
{
ave += double.Parse(components[3]);
}
if (m == 3)
{
ave += double.Parse(components[4]);
}
}
else break;
}
return ave/length;
}
각 과목 에 대응 하 는 모든 점 수 를 합 친 후 총 인원,즉 평균 점 수 를 나 누 어 Output()방법 으로 되 돌려 줍 니 다.맞 춤 형 문자열 배열 은 List.txt 텍스트 에 기록 하고 Form 7 에서 읽 으 며 Listview 에 표시 하면 됩 니 다.
깨끗이 제거 하 다
지우 기 는 모든 텍스트 데 이 터 를 비우 고 빈 문 자 를 덮어 쓰 면 됩 니 다.
private void ClearAll_Click(object sender, EventArgs e)
{
System.IO.File.WriteAllText("Score.txt", string.Empty);
System.IO.File.WriteAllText("List.txt", string.Empty);
this.load_data();
}
총결산전에 C\#를 접 해 본 적 이 없어 서 어떻게 해 야 할 지 모 르 겠 습 니 다.결론 적 으로 보면 이번 주 에 얻 은 수확 이 그리 크 지 않 습 니 다.하루 종일 눈 코 뜰 새 없 이 바 빠 서 밥 을 먹고 잠 을 자고 코드 를 두 드 렸 습 니 다.마지막 으로 정리 한 결과 정확 한 지식 을 배우 지 못 했 습 니 다.아무것도 배우 지 않 았 기 때문에 올 라 와 서 사용 하 는 방식 은 정말 이해 하기 어렵 습 니 다.여기 서 제 가 하고 싶 은 말 은 연구 만 하면열심히 연구 하 겠 습 니 다.아무리 어 려 운 문제 라 도 해결 방법 이 있 습 니 다.마지막 으로 한 마디 보충 하 겠 습 니 다.바 쁜 점 은 정말 좋 습 니 다.매일 충실 하고 힘 내 며 길 을 가 고 있 습 니 다.
자,이상 이 이 글 의 모든 내용 입 니 다.본 논문 의 내용 이 여러분 의 학습 이나 업무 에 어느 정도 참고 학습 가 치 를 가지 기 를 바 랍 니 다.여러분 의 저희 에 대한 지지 에 감 사 드 립 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
C#Task를 사용하여 비동기식 작업을 수행하는 방법라인이 완성된 후에 이 라인을 다시 시작할 수 없습니다.반대로 조인(Join)만 결합할 수 있습니다 (프로세스가 현재 라인을 막습니다). 임무는 조합할 수 있는 것이다. 연장을 사용하여 그것들을 한데 연결시키는 것이...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.