我正在尝试将位图保存为我的隔离存储作为png文件.我在Codeplex上找到了一个名为ImageTools的库,人们一直在推荐这个库,但是当我尝试它并试图打开文件时它说它已经腐败了.谁知道我做错了什么?
private static void SaveImageToIsolatedStorageAsPng(BitmapImage bitmap, string fileName)
{
//convert to memory stream
MemoryStream memoryStream = new MemoryStream();
WriteableBitmap writableBitmap = new WriteableBitmap(bitmap);
writableBitmap.SaveJpeg(memoryStream, bitmap.PixelWidth, bitmap.PixelHeight, 0, 100);
//encode memory stream as PNG
ExtendedImage image = new ExtendedImage();
image.SetSource(memoryStream);
PngEncoder encoder = new PngEncoder();
//Save to IsolatedStorage
using (var store = IsolatedStorageFile.GetUserStoreForApplication())
using (var writeStream = new IsolatedStorageFileStream(fileName, FileMode.Create, store))
{
encoder.Encode(image, writeStream);
}
}
Run Code Online (Sandbox Code Playgroud) 我希望单元测试仅在给定版本的 iOS 或更高版本上运行,但该@available属性似乎根本不适用于 XCTest 方法:-(
例如,我根本无法使用@available关键字的任何变体来禁用测试。无论@available是在类或函数、用途unavailable或任何东西上定义,测试始终执行。例如...
// Still runs on iOS
@available(iOS, unavailable)
class SomeTests: XCTestCase {
func testSomething() {
print("operatingSystemVersion=\(ProcessInfo.processInfo.operatingSystemVersion)")
XCTFail()
}
}
Run Code Online (Sandbox Code Playgroud)
// Still runs on iOS
class SomeTests: XCTestCase {
@available(iOS, unavailable)
func testSomething() {
print("operatingSystemVersion=\(ProcessInfo.processInfo.operatingSystemVersion)")
XCTFail()
}
}
Run Code Online (Sandbox Code Playgroud)
我可以使用下面的方法实现我想要的,但这对于很多测试来说并不实用,容易出错,在运行时确定,并且测试方法仍然执行并显示为成功(事实并非如此)。
class SomeTests: XCTestCase {
func testSomething() {
if #available(iOS 10.0, *) {
print("operatingSystemVersion=\(ProcessInfo.processInfo.operatingSystemVersion)")
XCTFail()
}
}
}
Run Code Online (Sandbox Code Playgroud)
我认为预处理器宏没有#if os(...)帮助,因为它不能进行版本检查。
有没有其他方法可以实现我想要的?我做错了什么@available(或者这可能只是一个错误)?
我正试图在iPhone和iPad之间测试iOS 8.1切换功能和NSUserActivity.为此,我尝试了实现自己的解决方案,并使用Apple的PhotoHandoff项目.但是,它不起作用.
如果我提供了一个webpageURL,切换工作正常,但是当我尝试使用userData或者addUserInfoEntriesFromDictionary实在不行,我不能为我的生活出美中不足的是什么使数据的工作.
示例代码:
NSUserActivity *activity = [[NSUserActivity alloc] initWithActivityType:@"com.company.MyTestApp.activity"];
activity.title = @"My Activity";
activity.userInfo = @ {};
// activity.webpageURL = [NSURL URLWithString:@"http://google.com"];
self.userActivity = activity;
[self.userActivity becomeCurrent];
[self.userActivity addUserInfoEntriesFromDictionary:@ { @"nanananan": @[ @"totoro", @"monsters" ] }];
Run Code Online (Sandbox Code Playgroud)
(我也无法使用具有相应活动类型的Mac应用程序)
Eclipse有一个类似Visual Studio的类型提前自动完成的插件,所以我不必一直按Ctrl+ 来破坏我的空格键Space吗?(如果您不知道它在Visual Studio中的工作原理,请不要打扰回答.)
而且,我可以将自动完成限制为导入的包,而不是地球上的每个Java类吗?当我和GWT合作时,看到来自awt和swing等的建议很令人沮丧.而且我不想将每个Java类添加到过滤器中,这只是愚蠢的.(再次,就像在Visual Studio中完成它一样!)
我正在使用以下代码在设备上创建实时磁贴:
ShellTile tile = ShellTile.ActiveTiles.FirstOrDefault();
StandardTileData newTileData = new StandardTileData
{
BackgroundImage = new Uri(string.Format("isostore:{0}", DefaultLiveTilePath), UriKind.Absolute),
Title = "Test"
};
tile.Update(newTileData);
Run Code Online (Sandbox Code Playgroud)
稍后我想删除实时图块图像,并在固定时将其恢复为应用程序图标.这可能吗?
我正在为机器人控制器创建一个包装库,它主要依赖于P/Invoke调用.
但是,机器人的许多功能(例如归位或移动)需要很长时间,并且在运行时执行线程锁定.
所以我想知道如何以异步方式包装功能,因此调用不会阻止我的UI线程.到目前为止我的想法是使用任务,但我不确定这是正确的方法.
public Task<bool> HomeAsync(Axis axis, CancellationToken token)
{
return Task.Factory.StartNew(() => Home(axis), token);
}
Run Code Online (Sandbox Code Playgroud)
目前关于.NET中Async模型的大多数MSDN文章主要是在已经具有异步功能的库(例如File.BeginRead等)上进行转发.但我似乎无法找到有关如何实际编写异步功能的更多信息.
我想将TPL与现有的API一起使用,RestSharp是特定的,所以我可以使用continuation.
但这意味着我必须将一个不采用传统.NET方法的API包装成异步,而是实现回调.拿这样的代码:
var client = new RestClient("service-url");
var request = new RestRequest();
client.ExecuteAsync<List<LiveTileWeatherResponse>>(request,
(response) =>
{
...
});
Run Code Online (Sandbox Code Playgroud)
所以我想在TPL中包装ExecuteAsync,如果可能的话.但我不能为我的生活,弄清楚如何做到这一点.
有任何想法吗?
我正在创建一个屏幕共享应用程序,它可以像Google Hangout Screen Shares一样工作,我想知道Google Talk插件(用于屏幕共享)如何产生子进程并使用动态端口范围.
我正在创建一个后台运行的应用程序,用户必须安装该应用程序,并与浏览器进行如下所述的对话,http://www.codeproject.com/Articles/36517/Communicating-from-the-Browser-to-a -桌面,应用程
但是,当我查看googleTalkPlugin,它负责谷歌聚会屏幕共享时,我看到有很多进程正在运行,每当我打开一个新浏览器时,该浏览器的新通话插件就会作为子服务启动.
这是一些快照


当我注意到googleTalkPlugin使用的端口时,我开始了解它的动态!如果您看到上面的链接,则浏览器桌面通信位于静态端口上.
我很有兴趣知道,我如何使用动态端口号?另外,我应该为每个浏览器创建子进程吗?还是更好的东西?
以下代码示例:(ASP.NET WebForms)
<asp:Content ContentPlaceHolderID="Contents" runat="server">
<div class="blogpost-list">
<asp:Repeater ID="blogList" runat="server">
<ItemTemplate>
<h2 class="blogpost-title">
<%# (Container.DataItem as BlogPost).Title %>
</h2>
<p class="blogpost-meta">
</p>
<p class="blogpost-content">
<%# (Container.DataItem as BlogPost).ParsedContent %>
</p>
</ItemTemplate>
</asp:Repeater>
</div>
</asp:Content>
Run Code Online (Sandbox Code Playgroud)
现在我想做的是避免DataItem的内容转换,即.这一行:
<%# (Container.DataItem as BlogPost).Title %>
Run Code Online (Sandbox Code Playgroud)
我对ASP.NET MVC感到鼓舞,并且想知道我是否可以创建一个强类型的视图,并将其定义为:
<%@ Page
Language="C#" MasterPageFile="~/Blog.Master"
AutoEventWireup="true" CodeBehind="Default.aspx.cs"
Inherits="MyBlog.Default<MyStrongViewType>"
%>
Run Code Online (Sandbox Code Playgroud)
或者任何其他避免类型转换的方法,并且通常具有ASP.NET WebForms的强类型视图.
有什么好主意吗?
为dealloc保证创建一个在同一线程上被称为NSObject实例?例如,如果我调用[[MyFluffyBunny alloc] init]主线程,dealloc保证也可以在主线程上调用,或者可以在任何线程上调用一次MyFluffyBunny不再保留?
我看到我的应用程序中的零星崩溃表明它无法保证,但我一直无法找到任何确认它的文档.