각 용어들의 큰 틀은
많은 용어가 있지만 크게 3단계(레벨)로 나눌수 있다.

 

 

1. Planning & Management (계획 및 관리)

 제조 공정의 전략적 목표 설정, 자원 배분, 그리고 전체적인 비즈니스 계획과 관련된 시스템들을 포함합니다.

  • ERP (Enterprise Resource Planning)
    • 역할 : 비즈니스의 모든 자원을 통합하여 계획하고 관리합니다. 재무, 인적 자원, 공급망, 물류 등의 데이터를 통합해 조직 전체의 효율성을 높입니다.
    •  상호작용 : MES와 연결되어 생산 계획과 자재 관리가 실시간으로 반영되며, SCM과도 협력하여 전체 공급망의 최적화를 지원합니다.
  • SCM (Supply Chain Management):
    • 역할 : 공급망 전체를 관리하며, 자재 수급, 생산 계획, 유통 등을 조율합니다.
    • 상호작용 :  ERP와의 통합을 통해 수요 예측과 재고 관리를 최적화하고, MES에 생산 계획을 전달합니다.
  • CRM (Customer Relationship Management):.
    • 역할 : 고객 관리와 판매를 지원하며, 고객의 요구와 피드백을 생산 및 품질 관리에 반영합니다
    • 상호작용: ERP와 통합되어 고객의 주문 및 서비스 데이터를 관리하며, 생산 계획에 영향을 미칩니다.
  • PDM / PLM (Product Data Management / Product Lifecycle Management)
    • 역할: 제품의 설계, 개발, 생산, 폐기까지 전 과정을 관리하며, 제품 데이터와 설계 정보를 통합 관리합니다.
    • 상호작용: MES와 연결되어 설계 변경 사항이 생산 공정에 즉시 반영됩니다.

2. Production & Execution (생산 및 실행)

 실제 생산 활동을 관리하고 실행하는 시스템들을 포함합니다.

  • MES (Manufacturing Execution System):
    • 역할: 생산 공정을 관리하고, 생산 일정, 품질 관리, 작업자 할당 등을 실시간으로 제어합니다.
    • 상호작용: ERP와의 통합을 통해 생산 계획을 실행하며, CMS와 FMS로부터 데이터를 수집하여 생산 현황을 모니터링하고 제어합니다.

 

3. Monitoring & Control (모니터링 및 제어)

 실시간으로 생산 현황을 모니터링하고, 필요한 경우 제어를 통해 생산 품질을 유지하는 시스템들을 포함합니다.

  • CMS (Control & Monitoring System): (중간역할)
    • 역할: 생산 현장의 설비와 공정을 실시간으로 모니터링하고 제어하여, 생산의 일관성과 품질을 유지합니다.
    • 상호작용: MES에 실시간 데이터를 제공하며, 문제가 발생하면 즉시 조치를 취합니다.
  • FMS (Flexible Manufacturing System):
    • 역할: 다양한 제품을 유연하게 생산할 수 있는 시스템으로, 자동화된 생산 설비를 통해 빠르게 생산을 전환합니다.
    • 상호작용: MES와 연결되어 생산 요구에 맞게 자동으로 작업을 조정하고 실행합니다.
  • TCS (Tool Control System):
    • 역할: 생산에 사용되는 도구와 장비를 관리하고 제어합니다.
    • 상호작용: CMS와 연결되어 도구 상태와 사용을 모니터링하며, MES에 데이터를 전달합니다.
  • OEE (Overall Equipment Effectiveness):
    • 역할: 설비의 효율성과 생산성을 측정하는 지표로, 가동 시간, 성능, 품질 등을 평가합니다.
    • 상호작용: CMS와 MES의 데이터를 활용하여 OEE를 계산하고, ERP에 보고합니다.
  • RDS (Remote Diagnosis System):
    • 역할: 원격으로 장비의 상태를 모니터링하고 진단하여, 문제 발생 시 신속하게 대응할 수 있도록 지원합니다.
    • 상호작용: CMS와 연결되어 장비의 이상 상태를 진단하고, 필요한 조치를 취합니다.

 

 

 

이해가 안가죠?
쉽게 말하면

 

 

3. Monitoring & Control (모니터링 및 제어) 에서 

공장 설비가 가동될때 실시간으로 전산화된 데이터를 수집한다. 에러, 재고..등등 모든 것을. 

FMS는 자동화 기능, CMS는 생산 관련을 전산화한것. TCS는 도구,장비를 전산화 한것

OEE, RDS는 설비, 장비의 상태나 최대생산량을 수치화한 것. 

 

이를 CMS가 통합하여 모든 것을 모니터링 한다. 

이후 CMS가 MES에서 보내고  1(SCM,ERP..) 과 관련된 것들이 MES 에게 지시를 한다. 

 

    이때, CMS 와 MES가 차이가 안나는 것 같아 보이는데, 예를 들어보면

CMS가 장비의 상태나 성능 데이터를 수집하여 MES에 제공하면, MES는 이 데이터를 기반으로 생산 계획을 조정하거나 작업 지시를 수정할 수 있습니다.

CMS는 단순히 공장의 모든 것을 데이터를 전산화 한것 기록일뿐이다.

MES는 모든 내용을 바탕으로 어떠한 지시나 계획을 조정하는 역할을 한다. 

그림과 같이 다른 분류이다.  

 

(왜 이렇게 구분한 건지는 난 모른다. 그저 이미 나누어 두었다는 것… ㅜ.ㅜ)

ERP와 MES의 차이점은 

MES는 모~든 것의 과정또한 알고 있다.(구동 과정 중 에러의 정확한 원인)

하지만 ERP는 ‘결과’만 가지고 있기에 다르다. (에러 80% - 이유는 모름.)

 

(왜 통합해서 관리 안하는 거지; 이유가 있었겠지)

 

물론 회사 마다 조금씩 서로의 개념에 침범하는 경우도 있을 수도 있다.

 


 

 

그러다가 또 의문 왜 이렇게 프로그램을 사용하는 걸까??

 

전산화한다는게 무슨 말이지? 라는 의문이 들 수 도 있다. 

전산화수작업으로 수행되던 작업을 컴퓨터와 소프트웨어를 활용하여 자동화하고 효율적으로 관리하는 과정 

이를 통해 데이터의 수집, 저장, 처리, 분석을 더 빠르고 정확하게 가능.

 

기존의 작업 방식:

  • 수기 기록: ‘종이’에 직접 작성하거나 ‘엑셀’ 파일을 사용하여 데이터를 수집. 이는 데이터의 누락, 오류, 일관성 문제
  • 비효율적인 정보 접근: 필요한 정보나 기록을 찾기 위해 수많은 폴더를 검색해야 했으며, 많은 시간이 소모
  • 기계 에러 관리의 어려움: 기계의 상태나 에러를 실시간으로 모니터링하기 어려워, 문제가 발생했을 때 대응 늦음.

 

 

스마트 팩토리는 이러한 문제를 해결하기 위해 PLC (Programmable Logic Controller)와 같은 자동화 기술을 활용하여 기계와 프로그램을 연결하고, 실시간으로 데이터를 관리하는 시스템.

 

자동화: PLC와 같은 자동화 장치를 통해 생산 공정을 제어하고, 기계와 시스템의 상태를 실시간 모니터링

실시간 데이터 수집 및 분석: 센서와 IoT(Internet of Things) 기술을 활용하여 데이터를 실시간으로 수집하고, 이를 기반으로 분석하여 의사 결정을 지원

통합된 시스템 관리: ERP, MES, SCM 등의 시스템과 통합하여 생산 계획, 재고 관리, 품질 관리 등 모든 부문을 효율적 관리

문제 예방 및 유연한 대응: 실시간 모니터링과 예측 분석을 통해 문제를 사전에 인식 및 대응 가능

 

스마트 팩토리의 이점

  • 생산성 향상: 자동화된 공정과 효율적인 자원 관리로 생산성을 높임
  • 품질 개선: 실시간 모니터링과 데이터 분석을 통해 품질 문제를 사전에 식별하고 수정 가능
  • 비용 절감: 에너지 사용, 자원 낭비를 최소화, 인건비와 유지보수 비용을 절감
  • 유연성 및 적시성: 다양한 제품을 유연하게 생산할 수 있으며, 변화하는 시장 요구에 신속하게 대응함
  • 데이터 기반 의사 결정: 데이터 분석을 통해 informed decision을 내리고, 공정의 최적화와 예측적 유지 보수를 지원

 

 

 

 

부제 : 내 손으로 만드는 자동 주식 거래 시스템

 

 

1부 : 파이썬 프로그래밍

2장 파이썬 변수와 문자열
중요 내용
_ 601,000원 가격이 3% 하락한 금액  =>  601,000 * 0.97_ 10,000원으로 시작해서 월,화요일 연속 하한가(-30%)를 기록했을 때, 화요일 종가는?   
월요일 종가 = 10,000 - (10,000 * 0.3) = 7,000    
화요일 종가 = 7000 * 0.7 = 4.900


변수, 객체, 바인딩, 문자열, 인덱싱, 슬라이딩, 문자열 자르기(split(' ')),
문자열 합치기( num + ' ' + num ), 기본 타입( type({변수명}) )

 

 

 

[ 연습문제 ]

2-1. 다음(Daum)의 주가가 89,000원이고 네이버(Naver)의 주가가 751,000원이라고 가정하고, 어떤 사람이 다음 주식 100주와 네이버 주식 20주를 가지고 있을 때 그 사람이 가지고 있는 주식의 총액을 계산하는 프로그램을 작성.

 

 

 

2-2. 문제 2-1에서 구한 주식 총액에서 다음과 네이버의 주가가 각각 5%, 10% 하락한 경우에 손실액을 구하는 프로그램을 작성하세요.


하락만 계산하고 가지고있는 주식 수를 곱하지 않아서 틀림.

 

 

 

 

 

 

2-3. 우리나라는 섭씨 온도를 사용하는 반면 미국과 유럽은 화씨 온도를 주로 사용합니다. 화씨 온도(F)를 섭씨 온도(C)로 변환할 때는 다음과 같은 공식을 사용합니다. 이 공식을 사용해 화씨 온도가 50일 때의 섭씨 온도를 계산해 보세요.

C = (F-32)/1.8

즉, F = 50일때 C는?

 

 

 

 

 

 

2-4. 화면에 "pizza"를 10번 출력하는 프로그램을 작성하세요.

 

 

 

 

 

 

2-5. 월요일에 네이버의 주가가 100만 원으로 시작해 3일 연속으로 하한가(-30%)를 기록했을 때 수요일의 종가를 계산해 보세요.



한줄로 한다면?

 Naver = 1000000 * (0.7 ** 3)

 

 

 

 

2-6 다음 형식과 같이 이름, 생년월일, 주민등록번호를 출력하는 프로그램을 작성해 보세요. 이름: 파이썬 생년월일: 2014년 12월 12일 주민등록번호: 20141212-1623210

- pass

 

 

 

 

2-7 s라는 변수에 'Daum KaKao'라는 문자열이 바인딩돼 있다고 했을 때 문자열의 슬라이싱 기능과 연결하기를 이용해 s의 값을 'KaKao Daum'으로 변경해 보세요.

 

 

 

 

 

2-8 a라는 변수에 'hello world'라는 문자열이 바인딩돼 있다고 했을 때 a의 값을 'hi world'로 변경해 보세요.

 

 

 

 

 

2-9 x라는 변수에 'abcdef'라는 문자열이 바인딩돼 있다고 했을 때 x의 값을 'bcdefa'로 변경해 보세요.

 x[:1] 을  x[0]으로도 할 수 있다. 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

부제 : 내 손으로 만드는 자동 주식 거래 시스템

 

1부 : 파이썬 프로그래밍

1장 파이썬 시작하기

 

중요한 내용
1. ' " 따옴표(작은, 큰)의 짝이 맞아야한다. 
2. 들여쓰기가 중요하다. 

 

 

[ 연습문제 ]

1-1. 파이썬 윈도우 환경에 직접 설치합니다. (완료)

 

1-2. 파이썬 IDLE를 실행 후 화면에 '주식은 대박이다.'라는 글자를 출력해 보세요. 

 

 

1-3. 파이썬에서 콘솔에 어떤 값을 출력할 때 사용하는 키워드(keyword)는 무엇인가요?

print()

 

 

1-4.다음 다섯 가지 파이썬 표현 중 정상적으로 화면에 값이 출력되는 것을 고르시오. 

[보기]

1) print("I love 'you'")
2) print("I love you')
3) print('Korea')
4) print{Hello}
5) print[Hello]

 

 

 

 

 

부제 : 내 손으로 만드는 자동 주식 거래 시스템 

2017년도에 나와서 지금도 될지 걱정이다.

 

2024년 8월 14일

_갑자기 주식의 수익성을 늘리기 위해서 파이썬 공부를 시작해보겠다. 

_이 책을 읽고 나서 얼마나 도움이 되는지 알아보고 싶다. 

_ 이번주 안에 다 읽고, 모두 실행하려면 하루에 140page를 읽어야하는데... 과연 할 수 있을까?

 

 

1. .xaml에 ComboBox를 추가한다. 

<ComboBox x:Name="cbb_{변수명}" SelectedValuePath="Key" DisplayMemberPath="Value" />

SelectedValuePath는 선택되는 항목을 아래(2)에서 보이듯이 

dicTemp의 Key값을 보일 것인지, Value값을 보일 것인지 정한다. 

보통 저렇게 지정하는 것 같다.

 

만약 여기서 지정하기 싫다면 

.cs 파일 내에서 이렇게 지정해 줄수도 있다. 

 

   this.cbb_{변수명}.SelectedValuePath = "Key";
   this.cbb_{변수명}.DisplayMemberPath = "Value";

 

 

 

2-0. chat gpt에 물어보니 

   public class 함수명   
      {
          public string Key { get; set; }
          public clsEnum.{Values} Value { get; set; }
          public 함수명(clsEnum.{Values} Key, string value)   생성자
          {
	       Key = key;	
              Value = value;
              
          }
          public override string ToString()
          {
              return Value;   ComboBox에 표시할 텍스트
          }
      }

이런식으로 사용하라는데;;

그냥  Dictionary<string, string> dicTemp = new Dictionary<string, string>(); 이거쓰면 한 줄에 가능. 

 

 

 

 

2. .cs에

Startprocess()부분에 

Dictionary<string, string> dicTemp = new Dictionary<string, string>();

this.cbb_{comboBox명}.SelectionChanged -= Cbb_{comboBox명}_SelectionChanged;
dicTemp.Clear();
dicTemp.Add( .Tostring(), "전체");
dicTemp.Add( .Tostring(), "전체");
dicTemp.Add( .Tostring(), "전체");
this.cbb_{comboBox명}.ItemsSource = new BindingSource(dicTemp, null);
this.cbb_{comboBox명}.SelectedIndex = 0;
this.cbb_{comboBox명}.SelectionChanged += Cbb_{comboBox명}_SelectionChanged;

 

dicTemp에 값들을 넣어준다. 

bindingSource를 해야 값이 들어간다. 

 

 Dictionary<string, string> dicTemp = new Dictionary<string, string>(); 은 

 Dictionary<int, string> dicTemp = new Dictionary<int, string>(); 

이렇게 구성할 수 도 있고, 저장한 데이터 타입에 따라 변경하면 된다. 

 

[ dicTemp의 것을 활용하는 방법 ]

this.{comboBox명}.SelectedItem == null  //dic로 담긴게 있는지
this.{comboBox명}.SelectedValue.Tostring()
(int)this.{comboBox명}.SelectedValue  //dic의 value값(앞인지, 뒤인지 잘모르겠음 아직도)

 

 

 

 


 

 

+ ComboBox의 - PopUp class의 Placement 

Popup이 화면에 표시될 위치를 결정하는 데 사용된다. 

 

  • Absolute: 기준 요소와 무관하게 화면의 절대 좌표를 기준으로 위치를 지정합니다.
  • Relative: 기준 요소의 좌측 상단 모서리를 기준으로 상대적인 위치를 지정합니다.
  • Bottom: 기준 요소의 아래쪽에 Popup을 표시합니다.
  • Center: 기준 요소의 중심에 Popup을 표시합니다.
  • Right: 기준 요소의 오른쪽에 Popup을 표시합니다.
  • AbsolutePoint: 기준 요소와 무관하게 화면의 절대 좌표를 기준으로 위치를 지정합니다. HorizontalOffset와 VerticalOffset 속성을 사용하여 조정할 수 있습니다.
  • RelativePoint: 기준 요소의 좌측 상단 모서리를 기준으로 상대적인 위치를 지정합니다. HorizontalOffset와 VerticalOffset 속성을 사용하여 조정할 수 있습니다.
  • Mouse: 마우스 커서 위치를 기준으로 Popup을 표시합니다. (ComboBox 중 클릭한 위치에!)
  • MousePoint: 마우스 커서 위치를 기준으로 Popup을 표시하고, HorizontalOffset와 VerticalOffset 속성을 사용하여 조정할 수 있습니다.
  • Left: 기준 요소의 왼쪽에 Popup을 표시합니다.
  • Top: 기준 요소의 위쪽에 Popup을 표시합니다.

사용 방법

<ComboBox x:Name="cbb_{변수명}" SelectedValuePath="Key" DisplayMemberPath="Value">
    <ComboBox.Template>
         <ControlTemplate TargetType="ComboBox">
             <Grid>
                 <ToggleButton Name="ToggleButton"
                       Grid.Column="2"
                       Template="{StaticResource ComboBoxToggleButton}" 
                       Focusable="false"
                       IsChecked="{Binding Path=IsDropDownOpen, Mode=TwoWay, RelativeSource={RelativeSource TemplatedParent}}"
                       ClickMode="Press">
                 </ToggleButton>
                 <ContentPresenter Name="ContentSite"
                           IsHitTestVisible="False"
                           Content="{TemplateBinding SelectionBoxItem}"
                           ContentTemplate="{TemplateBinding SelectionBoxItemTemplate}"
                           ContentTemplateSelector="{TemplateBinding ItemTemplateSelector}"
                           Margin="3,3,23,3"
                           VerticalAlignment="Center"
                           HorizontalAlignment="Left">
                 </ContentPresenter>                                
                 <Popup Name="Popup"
                Placement="MousePoint"
                IsOpen="{TemplateBinding IsDropDownOpen}"
                AllowsTransparency="True"
                Focusable="False"
                PopupAnimation="Slide">
                     <Grid Name="DropDown"
                   SnapsToDevicePixels="True"
                   MinWidth="{TemplateBinding ActualWidth}"
                   MaxHeight="{TemplateBinding MaxDropDownHeight}">
                         <Border Name="DropDownBorder"
                         BorderThickness="1"
                         Background="LightBlue">
                             <ScrollViewer Margin="4,6,4,6"
                                   SnapsToDevicePixels="True">
                                 <StackPanel IsItemsHost="True"
                                     KeyboardNavigation.DirectionalNavigation="Contained" />
                             </ScrollViewer>
                         </Border>
                     </Grid>
                 </Popup>
             </Grid>
         </ControlTemplate>
     </ComboBox.Template>
</ComboBox>

 

 

<ComboBox> 안에 추가한다.   

<Popup> 라인을 보면 된다. - Placement 속성을 수정하면되는데, 생략하면 유동적으로 생성된다. 

 

 

1. 디버그 관련

코드 실행 중 이전으로 돌아가고 싶다면 
해당 줄을 우클릭 후 '다음 문 설정'을 클릭하고 F10 누르면 다시 갈 수 있다. 

 

2. 매개변수 전달

에러가 날때 주는 변수의 타입과 받는 쪽의 매개변수 타입이 맞는지 확인해보자!

 

3. itemsource 반복현

itemsource 쓰니까 값들이 반복되서 여러번 나오게 된느 이유는?
 AutoGenerateColumns="False" 
이게 true 였어서;;

 

4. DB 조건 없애는 방법

where ({0}=ALL || {컬럼명}={0}) 

뭐가 문제 일까?

Binding 해서 많은 데이터들은 가져오는게 아닌가? 

 

Nop!  ItemsSource을 사용해서 Binding 해야한다. 

 

.xml 에서 ItemsSource 사용해서 해당 변수들의 상위 grid에서 binding을 추가해줘야한다. 

 

그후 .cs파일에서는 아래와 같이 사용하면 된다. 

public class Binding // 데이터 그리드 바인딩 클래스명
{
    public string Name { get; set; }

    public int Age { get; set; }
}

public ObservableCollection<Binding> BindingList { get; set; } 


public void 생성한 클래스명(){

	BindingList = new ObservableCollection<Binding>();
    
    
    //binding 담는 코드들
    
    BindingList.add();
    
    (.xml 파일에 ItemsSource={Binding BindingList} 한 곳의 x:Name 이름).ItemsSource = BindingList;
    
    
}

 

 

 

 

출처, 참고 자료 : 

https://stackoverflow.com/questions/32257785/bind-the-itemssource-of-a-datagrid-to-a-list

 

Bind the ItemsSource of a DataGrid to a List

I am trying to create a binding between a List and a DataGrid. I haven't found a working Solution in the net which is very strange. In my little example I create a List of objects with the two pu...

stackoverflow.com

 

 

 

갑자기 제대로 된 건데 변수명 인식이 에러 날때

 

솔루션 탐색기 (ctrl + alt + L)

 

프로젝트 우측 클릭 -> 파일 탐색기에서 폴더 열기 (아래에 존재)

obj, bin 파일 삭제하고 다시 빌드하면 된다. 

 

갑자기 이러는 이유에 대해서 생각해 봤는데, 

아마도 .xaml 에서 변수명들을 갑자기 많이 변경해서 얘가 정신이 나가 버린거 아닌가? 라는 예측이 든다.

 

 

둘다 타이머를 설정하는 것. 

화면을 계속해서 갱신(업데이트, 새로고침) 하기 위해서 사용됨.

 

 

 

1. DispatcherTimer

  • WPF (Windows Presentation Foundation) 애플리케이션에서 주로 사용 
  • UI 스레드에서 실행되며, UI 업데이트에 적합 
  • Interval은 TimeSpan 객체로 설정 
  • Tick 이벤트 핸들러는 UI 스레드에서 실행 

 

private DispatcherTimer _Timer;
this._Timer = new DispatcherTimer();
this._Timer.Interval = new TimeSpan(0, 0, 1); // 1초 간격
this._Timer.Tick += _Timer_Tick;
this._Timer.Start();

 

 

 

 

 

2. Timer (System.Windows.Forms.Timer)

 

  • Windows Forms 애플리케이션에서 주로 사용
  • UI 스레드에서 실행되며, 주로 WinForms UI 업데이트에 사용
  • Interval은 밀리초 단위의 정수 값으로 설정
  • Tick 이벤트 핸들러는 UI 스레드에서 실행
Timer timer = new Timer();
timer.Tick += OnTimerTick;
timer.Interval = 10000; // 10초 간격
timer.Start();

 

 

 

1초마다 계속해서 업데이트(화면 갱신)가 되어야하는 화면일 경우에는 

DispatcherTimer 클래스를 사용해서 기능을 만들 수 있다. 

 

나는 popup (버튼 클릭시 나오는 화면)에서 타이머를 설정하고 싶다. 

 

[공식 글]

//DispatcherTimer setup
dispatcherTimer = new System.Windows.Threading.DispatcherTimer();
dispatcherTimer.Tick += new EventHandler(dispatcherTimer_Tick);
dispatcherTimer.Interval = TimeSpan.FromSeconds(1);
dispatcherTimer.Start();

 

 

 

 

[적용 코드]

public 클래스명()
{
    InitializeComponent();
    this.Unloaded += WdViewStationStatus_Unloaded;
}

private void WdViewStationStatus_Unloaded(object sender, RoutedEventArgs e)
    {
    try
    {
        if (this._Timer != null) this._Timer.Stop();
    }
    catch (Exception ex)
    {
        this._Log.SetHisotry(clsHistory.eHistoryType.Error, ex.ToString());
    }
}   
   
private DispatcherTimer _Timer;
public void StartProcess()
{            
    try
    {
        this.UpdateDisplay();

        this._Timer = new DispatcherTimer();
        this._Timer.Interval = new TimeSpan(0, 0, 1);  //1초마다 
        this._Timer.Tick += _Timer_Tick;
        this._Timer.Start();

        this.Topmost = true;
        this.ShowDialog();
    }
    catch(Exception ex)
    {
        this._Log.SetHisotry(clsHistory.eHistoryType.Error, ex.ToString());
    }
}

private void _Timer_Tick(object? sender, EventArgs e)
{
    try
    {
        this.UpdateDisplay();
    }
    catch (Exception ex)
    {
        this._Log.SetHisotry(clsHistory.eHistoryType.Error, ex.ToString());
    }
}

 

 

this.Unloaded += WdViewStationStatus_Unloaded; 를 해줘야 popup 종료시 타이머가 꺼지는 것이다. 

 

 

 

 

 

출처 : https://learn.microsoft.com/ko-kr/dotnet/api/system.windows.threading.dispatchertimer?view=windowsdesktop-8.0

 

DispatcherTimer 클래스 (System.Windows.Threading)

지정된 시간 간격과 우선 순위로 처리되는 Dispatcher 큐로 통합되는 타이머입니다.

learn.microsoft.com

 

+ Recent posts