본문 바로가기

전체 글326

[C#] Task.Wait() vs await Task - Task.Wait은 Task가 끝날 때까지 기다리는 블로킹 동기화 방식 using System; using System.Threading; using System.Threading.Tasks; namespace tstAsyncConsole { class Program { static void Main(string[] args) { Console.WriteLine("Before"); Task1().Wait(); Console.WriteLine("After"); Console.ReadKey(); } public static async Task Task1() { await Task.Delay(1500); Console.WriteLine("Finished Task1"); } } } - await은 해당 Ta.. 2023. 5. 12.
[C#] 비동기 async / await 키워드 C# 5.0부터 새로운 C# 키워드로 async와 await가 추가되었다. 이 키워드들은 기존의 비동기 프로그래밍 (asynchronous programming)을 보다 손쉽게 지원하기 위해 C# 5.0에 추가된 중요한 기능이다. C# async는 컴파일러에게 해당 메서드가 await를 가지고 있음을 알려주는 역활을 한다. async라고 표시된 메서드는 await를 1개 이상 가질 수 있는데, 하나도 없는 경우라도 컴파일은 가능하지만 Warning 메시지가 표시된다. async를 표시한다고 해서 자동으로 비동기 방식으로 프로그램을 수행하는 것은 아니고, 일종의 보조 역활을 하는 컴파일러 지시어로 볼 수 있다. async 메서드의 리턴 타입은 대부분의 경우 Task (리턴값이 있는 경우) 혹은 Task (.. 2023. 5. 12.
[C#] async await 예제 코드 (+ 동기 비동기의 개념) [C#] async await 기초 #1 : 동기 비동기 개념 이해하기 https://kangworld.tistory.com/24 [C#] async await 예제 코드 #2 (+ 동기 비동기의 개념) https://kangworld.tistory.com/25 public partial class Form1 : Form { public Form1() { InitializeComponent(); } //async는 await 키워드를 메서드 내에 사용할 수 있게 만들어준다를 기억 //async메서드는 반드시 void 또는 Task 또는 Task를 반환해야 한다. public static async void MyAsyncFunc() { for (int i = 0; i < 500; i++) { //1만개되는.. 2023. 5. 12.
[C#] USB상태 변경시 .. private const int DBT_DEVICEARRIVAL = 0x8000; private const int DBT_DEVICEREMOVECOMPLETE = 0x8004; private const int DBT_DEVTYP_VOLUME = 0x00000002; using System.Runtime.InteropServices; using System.Windows.Forms; namespace UsbDriveDetector { public partial class Form1 : Form { private const int WM_DEVICECHANGE = 0x219; private const int DBT_DEVICEARRIVAL = 0x8000; private const int DBT_DEVI.. 2023. 5. 10.
Javascript - replace, replaceAll [문자 치환하기] replace()와 정규식(RegExp)을 활용해 replaceAll() 만들기 바뀜 웹 서버는 웹 브라우저에서 웹 문서를 요청할 때 필요한 기능을 수행합니다. 이 책에서는 노드를 사용해서 Server를 만들 것이므로 먼저 노드에서 제공하는 다향한 모듈을 사용하여 웹 서버를 만들어 볼 것입니다. 앞에서 살펴본 서버 유형을 다시 한 번 확인 다음 여러분이 언제, 어디에서, 무엇을 위해 웹 서버를 사용할지 스스로 체크해 보세요 여러분이 만들 웹 서버는 웹 프레임워크인 익스프레스로 기본구조를 만들고 데이터를 저장하거나 조회합니다. replace() 함수는 기본 동작은 매칭 대상이 되는 첫 번째 문자를 반환해 새로운 문자를 반환하는 것입니다. 그렇기 때문에 모든 문자 치환 같은 기능은 replace()의 옵션 .. 2023. 5. 8.
[C#/WINFORM] Control 클래스 : ProcessCmdKey 메소드를 사용해 CTRL, SHIFT, ALT 조합 키 입력받기 ▶ MainForm.cs using System.Windows.Forms; namespace TestProject { /// /// 메인 폼 /// public partial class MainForm : Form { //////////////////////////////////////////////////////////////////////////////////////////////////// Constructor ////////////////////////////////////////////////////////////////////////////////////////// Public #region 생성자 - MainForm() /// /// 생성자 /// public MainForm() { Init.. 2023. 4. 17.
[C#] 도구 상자 항목 ' ' 을(를) 로드하지 못했습니다. 해당 항목은 도구 상자에서 제거됩니다. / 유저 컨트롤 x86 -> x64 로 프로그램을 변경하면서 유저컨트롤 항목을 디자이너에서 사용시 오류가 났다. 구글링을 하면 프로젝트를 정리 하고 다시 빌드해라 유저컨트롤을 프로젝트에서 제거하고 다시 등록해라 등등등...여러 방법이 나오지만 해결 되지 않았다... 결국 이것저것 시도하다가 반정도는 해결 한거 같다. 솔루션은 x64 프로젝트는 Any CPU 설정하니 정상적으로 동작이 됐다. 뭔가 퍼펙트한? 해결 방법은 아니지만 우선 문저없이 동작이 되니까 우선 적용해서 개발을 다시 진행 했다. 출처 : C# / 도구 상자 항목 ' ' 을(를) 로드하지 못했습니다. 해당 항목은 도구 상자에서 제거됩니다. / 유저 컨트롤 :: 무엇이든 공부하는 블로그 (tistory.com) 2023. 4. 12.
[C#] 투명배경 RichTextBox 배경이 투명한 리치텍스트박스(RichTextBox) 입니다. 메신저 대화창 작업중 투명한 넘이 필요해지는 바람에... public class TransparentRichTextBox : System.Windows.Forms.RichTextBox { public TransparentRichTextBox() { base.ScrollBars = System.Windows.Forms.RichTextBoxScrollBars.Vertical; } [System.Runtime.InteropServices.DllImport("kernel32.dll", CharSet = System.Runtime.InteropServices.CharSet.Auto)] public static extern IntPtr LoadLibrar.. 2023. 4. 11.
[C#] byte데이터를 Naudio에서 실시간 출력 안녕하세요! C#에서 소켓통신으로 받은 byte 데이터를 NAudio 라이브러리를 사용하여 실시간으로 스피커로 출력하는 코드를 만드는 방법에 대해 알려드리겠습니다. 먼저, 소켓통신으로 받은 byte 데이터를 큐에 담습니다. 그리고 큐에서 데이터를 읽어들여 NAudio 라이브러리를 사용하여 스피커로 출력하면 됩니다. 아래는 소켓통신으로 받은 byte 데이터를 NAudio 라이브러리를 사용하여 실시간으로 스피커로 출력하는 코드입니다. using NAudio.Wave; using System.Net.Sockets; private WaveOutEvent waveOut; private BufferedWaveProvider bufferedWaveProvider; //별도 스레드에서 실행 public void Sta.. 2023. 4. 4.
[WinForm] 두 개의 Chart, 수학 함수 그래프 그리기 두 개의 차트 영역, 두 개의 시리즈 사용 Chart 컨트롤 하나는 ChartArea 컬렉션과 Series 컬렉션을 갖는다. ChartArea는 차트가 그려지는 영역이고, Series는 데이터를 의미한다. 즉, Chart 컨트롤 하나가 여러 개의 차트 영역과 시리즈를 가질 수 있다. Chart 컨트롤을 폼에 추가하면 ChartArea1과 Series1이 추가되어있다. 이번에 만들어볼 차트는 두 개의 차트 영역에 두 개의 시리즈(수학, 영어)가 출력되게한다. 이때, 아래에 있는 "합쳐서 그리기" 버튼을 클릭하면 두 개의 시리즈가 하나의 차트 영역에 합쳐서 보이도록 해준다. 다시 "나누어 그리기" 버튼을 클릭하면 처음처럼 두 개의 차트 영역에 각각의 시리즈가 그려지게 되는 차트를 만들어볼것이다. 도구상자에서.. 2023. 3. 29.