Multithreading with Async gives a TypeCasting Error when using TaskEx.WhenAll()
===

In the code below, I am trying to execute a method, which returns a value, in another thread. However, it just DOES NOT work!!!

        public void main()
        {
           lstChapters.DataContext = await TaskEx.WhenAll(LoadChapters());
        }


        internal static async Task< IEnumerable<dictChapters>> LoadChapters()
        {
            var element = XElement.Load("xml/chapters.xml");

            Task < IEnumerable < dictChapters >>  something = (Task<IEnumerable<dictChapters>>)  await TaskEx.Run(delegate
            {

            IEnumerable<dictChapters> Chapters =  
               from var in element.Descendants("chapter")
               orderby var.Attribute("index").Value
               select new dictChapters
               {
                  ChapterIndex = Convert.ToInt32(var.Attribute("index").Value),
                  ChapterArabicName = var.Attribute("name").Value,
                  ChapterType = var.Attribute("type").Value,
               };
                return Chapters;}
            );

            return something; //An ERROR on this line
         }


The Error is:

Error	1	Cannot implicitly convert type 'System.Threading.Tasks.Task<System.Collections.Generic.IEnumerable<iq_main.dictChapters>>' to 'System.Collections.Generic.IEnumerable<iq_main.dictChapters>'. An explicit conversion exists (are you missing a cast?)

When I cast "something" explicitly like `return (IEnumerable<dictChapters>) something` then at runtime, I get "InvalidCastException".