이벤트 처리

실행 과정을 유저에게 보여줍니다.

런처의 진행 상황을 유저에게 보여주고 싶다면 이벤트 헨들러를 등록하세요. CmlLib.Core 는 오직 두가지의 이벤트 헨들러만 사용합니다. DownloadFileChangedHandler 는 처리중인 파일이 바뀌었을 때, 어떤 파일을 처리 중인지, 남은 파일의 수는 얼마나 되는지 등을 알려주기 위한 헨들러입니다. ProgressChangedEventHandler 는 진행 상황을 바이트 단위로 계산하여 백분율을 알려주기 위한 헨들러입니다.

예시

// 이벤트 헨들러 등록
var launcher = new CMLauncher(new MinecraftPath());
launcher.FileChanged += Launcher_FileChanged;
launcher.ProgressChanged += Launcher_ProgressChanged;
// 이벤트 헨들러
private void Launcher_FileChanged(DownloadFileChangedEventArgs e)
{
    Console.WriteLine("파일종류: " + e.FileKind.ToString());
    Console.WriteLine("파일이름: " + e.FileName);
    Console.WriteLine("전체 파일개수: " + e.TotalFileCount);
    Console.WriteLine("진행한 파일개수: " + e.ProgressedFileCount);
}

private void Launcher_ProgressChanged(object sender, System.ComponentModel.ProgressChangedEventArgs e)
{
    Console.WriteLine(e.ProgressPercentage + "%");
}

DownloadFileChangedEventHandler

public delegate void DownloadFileChangedHandler(DownloadFileChangedEventArgs e);

Represents the method that will handle download progress events.

DownloadFileChangedEventArgs contains the download progress.

DownloadFileChangedEventArgs

Represents the download progress data of IDownloader.

Source Code

Properties

FileKind

Type: MFile

Specifies the type of file currently being downloaded.

FileName

Type: string

The name of the file currently being downloaded. Note: if FileKind is equal to MFile.Resource, this property would be an empty string.

Source

Type: object

The source of event. You can determine what object raised the event. Example:

if (e.Source is IFileChecker)
{
    // raised by IFileChecker
    // game file checking
}
else if (e.Source is IDownloader)
{
    // raised by IDownloader
    // file downloading
}
else
{
    // etc (MForge, or )
}

TotalFileCount;

Type: int

The total number of files to download.

ProgressedFileCount;

Type: int

The number of files already downloaded.

ProgressChangedEventHandler

docs.microsoft.com

MFile

Indicates the game file type.

public enum MFile { Runtime, Library, Resource, Minecraft };

Fields

Runtime

Java runtime. CMLauncher.CheckJRE() raises FileChange event with this type.

Library

Libraries (GAME_DIR/libraries)

Resource

Resources and assets (GAME_DIR/assets)

Minecraft

Minecraft jar file (GAME_DIR/versions)

Last updated