internal async Task HandleFileAsync(ControllerParameter parameter) { var profile = parameter.SenderProfile; var handler = NewFileReceiver; if (profile == null || handler == null || parameter.ConnectionType != LinkConnectionType.Tcp) { return; } var data = parameter.Packet.Data; var name = data["name"].As <string>(); var length = data["length"].As <long>(); using (var receiver = new FileReceiver(this, profile, parameter.Stream, name, length)) { await parameter.ResponseAsync(new { status = "wait" }); await UpdateUIAsync(() => handler.Invoke(receiver)); await receiver.LoopAsync(); } }
private async Task HandleFileAsync(IRequest parameter) { var profile = parameter.SenderProfile; var handler = NewFileReceiver; if (profile == null || handler == null || parameter.NetworkType != NetworkType.Tcp) { return; } var data = parameter.Packet.Data; var name = data["name"].As <string>(); var length = data["length"].As <long>(); using (var receiver = new FileReceiver(this.context, profile, parameter.Stream, name, length)) { await parameter.ResponseAsync(new { status = "wait" }); await this.dispatcher.InvokeAsync(() => handler.Invoke(receiver)); await receiver.LoopAsync(); } }