c# - 创建等待任务以发送消息
问题描述
我做了一个客户端服务器异步。连接打开,客户端向服务器发送一个字符串。但是现在我想在用户单击按钮时向他发送一些东西OK
我尝试执行等待任务,从我的服务器向我的客户端发送消息,如下所示:
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;
}
但我的服务器不发送并挂起。有人可以解释一下为什么吗?感谢您的帮助
解决方案
@Xavier Xie:这是我的服务器端代码
string response;
using(Stream inputStream = streamSocket.InputStream.AsStreamForRead())
{
using(StreamReader streamReader = new StreamReader(inputStream))
{
response = await streamReader.ReadLineAsync();
}
}
this.txtBlk_Events.Text += response;
我变成了这条消息:“现有连接必须由远程主机关闭”
推荐阅读
- javascript - 防止人们能够单击按钮内的图标
- python - BeautifulSoup:数字问题
- python - 将 df.get() 函数应用于 pandas df 中的每一行
- javascript - 为什么当我将 tr 标签移动到深层时反应行为很奇怪?
- elasticsearch - 如何为elasticsearch中的术语查询设置case_insensitive?
- graphql - 突变中的 GraphQL 嵌套节点 - 对象文字只能指定已知属性,并且类型中不存在“天”
- python - 用平均值替换特定列
- python - 总结python中字典列表的多个条件
- python - (python) 将对象创建为模块
- javascript - 如何在css和javascript中单击时使汉堡可见?