찾다
백엔드 개발C#.Net 튜토리얼C#은 기존 .NET 이벤트와 연결하기 위한 간단한 코드를 구현합니다.

본 글에서는 기존 .NET이벤트와의 간단한 브리징 구현을 위한 C# 관련 정보를 주로 소개합니다. 필요한 친구는

C#은 기존 .NET 이벤트와 브리징하는 간단한 예를 구현합니다.

Rx는 모든 유형의 데이터 흐름에서 제공되는 것을 사용할 수 있도록 .NET의 기존 비동기 소스와 브리징하는 팩토리 메서드를 제공합니다. 조합, 필터링 및 자원 관리 기능. 이 항목에서는 .NET 이벤트를 관찰 가능한 시퀀스로 Rx로 "가져올" 수 있도록 하는 FromEventPattern

연산자를 검사합니다. 이벤트가 발생할 때마다 OnNext 메시지가 관찰 가능한 시퀀스로 전달됩니다. 그런 다음 다른 관찰 가능한 시퀀스처럼 이벤트 데이터를 처리할 수 있습니다.

Rx는 .NET 이벤트, 비동기 패턴 또는 작업 병렬 라이브러리와 같은 기존 비동기

프로그래밍 모델을 대체하기 위한 것이 아닙니다. 그러나 이벤트를 작성하려고 하면 Rx의 팩토리 메서드는 현재 프로그래밍 모델에서는 찾을 수 없는 편리함을 제공합니다. 이는 특히 리소스 유지 관리(예: 구독 취소 시기) 및 필터링(예: 수신할 데이터 유형 선택)에 해당됩니다. 이 주제와 다음 주제에서는 이러한 Rx 기능이 비동기 프로그래밍에 어떻게 도움이 되는지 배울 수 있습니다.

.NET 이벤트를 Rx 관찰 가능 시퀀스로 변환

다음 예에서는 마우스 이동 이벤트에 대한 간단한 .NET

이벤트 핸들러 프로그램을 생성하고 인쇄합니다. Windows Form 레이블의 마우스 위치.

using System.Linq;
using System.Windows.Forms;
using System.Reactive;
using System.Reactive.Linq;
using System;
using WinForm;
using System.Reactive.Disposables;

class Program {

  static void Main() 
  {
     var lbl = new Label(); 
     var frm = new Form { Controls = { lbl } }; 
     frm.MouseMove += (sender, args) =>
     {
       lbl.Text = args.Location.ToString();
     };
     Application.Run(frm);
  }; 
}
이벤트를 Rx로 가져오려면 FromEventPattern 연산자를 사용하고 연결하려는 이벤트에 의해 발생되는 EventArgs

개체를 제공할 수 있습니다. FromEventPattern 연산자는 개체의 발신자 및 일부 EventArgs로부터 이벤트를 수신하는 데 사용되며 리플렉션을 사용하여 이러한 추가/제거 메서드를 찾습니다. 그런 다음 지정된 이벤트를 보낸 사람 및 이벤트 매개변수를 캡처하는 EventPattern 유형을 사용하여 관찰 가능한 시퀀스로 변환합니다.

인수가 하나인 프록시(비표준 이벤트)의 경우 FromEvent

연산자를 사용할 수 있습니다. 이 연산자에는 핸들러 연결 및 분리를 위한 함수 다음 예에서는 Windows Forms 마우스 이동 이벤트 스트림을 관찰 가능한 시퀀스로 변환합니다. 구독자는 마우스 이동 이벤트가 트리거될 때마다 OnNext 알림을 받게 됩니다. 그런 다음 해당 알림의 EventArgs 값을 확인하고 마우스 이동 위치를 가져올 수 있습니다.

using System.Linq;
using System.Windows.Forms;
using System.Reactive;
using System.Reactive.Linq;
using System;
using WinForm;
using System.Reactive.Disposables;

class Program {

  static void Main() 
  {
     var lbl = new Label(); 
     var frm = new Form { Controls = { lbl } }; 
     IObservable<eventpattern>> move = Observable.FromEventPattern<mouseeventargs>(frm, "MouseMove");
     move.Subscribe(evt => { 
               lbl.Text = evt.EventArgs.Location.ToString(); 
            }) ;
     Application.Run(frm);
  }; 
}</mouseeventargs></eventpattern>

이 예에서 move는 추가로 조작할 수 있는 관찰 가능한 시퀀스가 ​​됩니다.

쿼리

LINQ 연산자를 사용하여 관찰 가능한 시퀀스 항목에서는 이 시퀀스를 포인트 유형 컬렉션에 투영하고 해당 내용을 필터링하여 애플리케이션이 특정 조건을 충족하는 값만 수신하도록 하는 방법을 보여줍니다. 이벤트 핸들러 정리는 Subscribe 메서드에서 반환된 IDisposable 개체에 의해 처리됩니다. Dispose를 호출하면(이 예에서는 use-block의 끝에 도달하여 수행됨) 기본 이벤트 핸들러를 포함하여 시퀀스에서 사용되는 모든 리소스가 해제됩니다. 이는 본질적으로 귀하를 대신하여 이벤트 구독을 취소합니다.

위 내용은 C#은 기존 .NET 이벤트와 연결하기 위한 간단한 코드를 구현합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
如何使用C#编写时间序列预测算法如何使用C#编写时间序列预测算法Sep 19, 2023 pm 02:33 PM

如何使用C#编写时间序列预测算法时间序列预测是一种通过分析过去的数据来预测未来数据趋势的方法。它在很多领域,如金融、销售和天气预报中有广泛的应用。在本文中,我们将介绍如何使用C#编写时间序列预测算法,并附上具体的代码示例。数据准备在进行时间序列预测之前,首先需要准备好数据。一般来说,时间序列数据应该具有足够的长度,并且是按照时间顺序排列的。你可以从数据库或者

如何使用Redis和C#开发分布式事务功能如何使用Redis和C#开发分布式事务功能Sep 21, 2023 pm 02:55 PM

如何使用Redis和C#开发分布式事务功能引言分布式系统的开发中,事务处理是一项非常重要的功能。事务处理能够保证在分布式系统中的一系列操作要么全部成功,要么全部回滚。Redis是一种高性能的键值存储数据库,而C#是一种广泛应用于开发分布式系统的编程语言。本文将介绍如何使用Redis和C#来实现分布式事务功能,并提供具体代码示例。I.Redis事务Redis

如何实现C#中的人脸识别算法如何实现C#中的人脸识别算法Sep 19, 2023 am 08:57 AM

如何实现C#中的人脸识别算法人脸识别算法是计算机视觉领域中的一个重要研究方向,它可以用于识别和验证人脸,广泛应用于安全监控、人脸支付、人脸解锁等领域。在本文中,我们将介绍如何使用C#来实现人脸识别算法,并提供具体的代码示例。实现人脸识别算法的第一步是获取图像数据。在C#中,我们可以使用EmguCV库(OpenCV的C#封装)来处理图像。首先,我们需要在项目

C#开发中如何处理跨域请求和安全性问题C#开发中如何处理跨域请求和安全性问题Oct 08, 2023 pm 09:21 PM

C#开发中如何处理跨域请求和安全性问题在现代的网络应用开发中,跨域请求和安全性问题是开发人员经常面临的挑战。为了提供更好的用户体验和功能,应用程序经常需要与其他域或服务器进行交互。然而,浏览器的同源策略导致了这些跨域请求被阻止,因此需要采取一些措施来处理跨域请求。同时,为了保证数据的安全性,开发人员还需要考虑一些安全性问题。本文将探讨C#开发中如何处理跨域请

Redis在C#开发中的应用:如何实现高效的缓存更新Redis在C#开发中的应用:如何实现高效的缓存更新Jul 30, 2023 am 09:46 AM

Redis在C#开发中的应用:如何实现高效的缓存更新引言:在Web开发中,缓存是提高系统性能的常用手段之一。而Redis作为一款高性能的Key-Value存储系统,能够提供快速的缓存操作,为我们的应用带来了不少便利。本文将介绍如何在C#开发中使用Redis,实现高效的缓存更新。Redis的安装与配置在开始之前,我们需要先安装Redis并进行相应的配置。你可以

如何使用C#编写动态规划算法如何使用C#编写动态规划算法Sep 20, 2023 pm 04:03 PM

如何使用C#编写动态规划算法摘要:动态规划是求解最优化问题的一种常用算法,适用于多种场景。本文将介绍如何使用C#编写动态规划算法,并提供具体的代码示例。一、什么是动态规划算法动态规划(DynamicProgramming,简称DP)是一种用来求解具有重叠子问题和最优子结构性质的问题的算法思想。动态规划将问题分解成若干个子问题来求解,通过记录每个子问题的解,

如何实现C#中的遗传算法如何实现C#中的遗传算法Sep 19, 2023 pm 01:07 PM

如何在C#中实现遗传算法引言:遗传算法是一种模拟自然选择和基因遗传机制的优化算法,其主要思想是通过模拟生物进化的过程来搜索最优解。在计算机科学领域,遗传算法被广泛应用于优化问题的解决,例如机器学习、参数优化、组合优化等。本文将介绍如何在C#中实现遗传算法,并提供具体的代码示例。一、遗传算法的基本原理遗传算法通过使用编码表示解空间中的候选解,并利用选择、交叉和

如何使用C#编写背包问题算法如何使用C#编写背包问题算法Sep 19, 2023 am 09:21 AM

如何使用C#编写背包问题算法背包问题(KnapsackProblem)是一个经典的组合优化问题,它描述了一个给定容量的背包以及一系列物品,每个物品都有自己的价值和重量。目标是找到一种最佳策略,使得在不超过背包容量的情况下,装入背包的物品总价值最大。在C#中,可以通过动态规划方法来解决背包问题。具体实现如下:usingSystem;namespace

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25 : Myrise에서 모든 것을 잠금 해제하는 방법
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

SublimeText3 Linux 새 버전

SublimeText3 Linux 새 버전

SublimeText3 Linux 최신 버전

PhpStorm 맥 버전

PhpStorm 맥 버전

최신(2018.2.1) 전문 PHP 통합 개발 도구

Atom Editor Mac 버전 다운로드

Atom Editor Mac 버전 다운로드

가장 인기 있는 오픈 소스 편집기

Eclipse용 SAP NetWeaver 서버 어댑터

Eclipse용 SAP NetWeaver 서버 어댑터

Eclipse를 SAP NetWeaver 애플리케이션 서버와 통합합니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경