我想像这样用PhotoChooserTask返回一张照片:
private void getimage_Click(object sender, EventArgs e)
{
photoChooserTask = new PhotoChooserTask();
photoChooserTask.Completed += new EventHandler<PhotoResult>(photoChooserTask_Completed);
try
{
photoChooserTask.Show();
}
catch (System.InvalidOperationException ex)
{
MessageBox.Show("An error occurred.");
}
}
void photoChooserTask_Completed(object sender, PhotoResult ee)
{
if (ee.TaskResult == TaskResult.OK)
{
BitmapImage bmp = new BitmapImage();
bmp.SetSource(ee.ChosenPhoto);
if (ee.TaskResult == TaskResult.OK && ee.Error == null)
{
WriteableBitmap wb = new WriteableBitmap(bmp);
notes.Add(new chatinfo() { sendimage = bmp });
noteListBox.ItemsSource = null;
noteListBox.ItemsSource = notes;
}
}
}但每次程序到达这里时:“bmp.SetSource(ee.ChosenPhoto);”将调用一个SocketException。
private void OnRecieveFrom()
{
var receiveArgs = new SocketAsyncEventArgs();
receiveArgs.RemoteEndPoint = this.IPEndPoint;
receiveArgs.SetBuffer(new Byte[MAX_BUFFER_SIZE], 0, MAX_BUFFER_SIZE);
var strBdr = new StringBuilder();
receiveArgs.Completed += (__, result) =>
{
string message = CreateMessage(result);
Deployment.Current.Dispatcher.BeginInvoke(() =>
{
this.RaiseReceived(message);
});
socket.ReceiveFromAsync(receiveArgs);
};
socket.ReceiveFromAsync(receiveArgs);
}SocketException是由“socket.ReceiveFromAsync(ReceiveArgs)”调用的;我只想从手机获取一张照片,没有发送或接收操作。我不知道为什么要调用接收函数。
当应用跳转到相册(套接字的"RemoteEndPoint“值变为空)时,是否会丢失套接字通信?附注:"Socket“是"socket”类的对象。如果是这样,我是否应该在每次应用跳出时重新创建“套接字”?
谢谢!
发布于 2012-12-12 19:47:57
一旦调用了PhotoChooserTask,你的应用程序将被快速切换(甚至可能是逻辑删除)。
无论哪种方式,您的套接字都将被关闭。当你的应用被再次激活时,你将不得不重新打开你的套接字。
https://stackoverflow.com/questions/13833399
复制相似问题