【发布时间】:2018-12-25 00:55:07
【问题描述】:
我做了一个客户端服务器异步。连接打开,客户端向服务器发送一个字符串。但是现在我想在用户单击按钮时向他发送一些东西确定
我尝试执行等待任务,从我的服务器向我的客户端发送消息,如下所示:
private async void buttonOk_ClickAsync(object sender, RoutedEventArgs e)
{
// Get all strokes on the InkCanvas.
IReadOnlyList<InkStroke> currentStrokes = inkCanvas.InkPresenter.StrokeContainer.GetStrokes();
Boolean flag = false;
if (currentStrokes.Count > 0)
{
Windows.Storage.StorageFolder picturesLibrary = KnownFolders.PicturesLibrary;
StorageFolder savedPicturesFolder = await picturesLibrary.CreateFolderAsync("New Pictures", CreationCollisionOption.OpenIfExists);
StorageFile imageFile = await savedPicturesFolder.CreateFileAsync("NewImage.jpg", CreationCollisionOption.ReplaceExisting);
CanvasDevice device = CanvasDevice.GetSharedDevice();
CanvasRenderTarget renderTarget = new CanvasRenderTarget(device, (int)inkCanvas.ActualWidth, (int)inkCanvas.ActualHeight, 96);
using (var ds = renderTarget.CreateDrawingSession())
{
ds.Clear(Colors.White);
ds.DrawInk(inkCanvas.InkPresenter.StrokeContainer.GetStrokes());
}
using (var fileStream = await imageFile.OpenAsync(FileAccessMode.ReadWrite))
{
await renderTarget.SaveAsync(fileStream, CanvasBitmapFileFormat.Jpeg, 1f);
}
flag = true;
}
if (flag)
{
var res = await senddata();
flag = false;
}
inkCanvas.InkPresenter.StrokeContainer.Clear();
GrdLogo.Visibility = Visibility.Visible;
GrdApp.Visibility = Visibility.Collapsed;
}
private async Task<string> senddata()
{
Stream streamOut = socket.OutputStream.AsStreamForWrite();
StreamWriter writer = new StreamWriter(streamOut);
string request = "Hello client";
await writer.WriteLineAsync(request);
await writer.FlushAsync();
return null;
}
但我的服务器不发送并挂起。有人可以解释一下为什么吗? 感谢您的帮助
【问题讨论】:
-
是不是因为画布没有清空而“挂起”?
-
“挂起”是什么意思?它挂在哪里,哪一行代码?究竟是什么没有发生?
senddata()是什么? -
在这一行:var res = await senddata();服务器不发送请求=“Hello client”并自行关闭
-
那么为什么要向我们展示除了不起作用的方法之外的所有内容?
-
对不起,方法在最后
标签: c# uwp stream async-await task